Java正则表达式只匹配双方括号中的单词

标签 java regex

我正在尝试这样做: 我有这种文本(即文件):

[[dadasd sadasd sdsd ad asddd]] [[dasdsd]] dsdsd [[dsdas]] ... [[dd ssas dd]]

我只想要双方括号之间的句子。我如何用 java 解决这个问题?

//This one is not working:
    String patternStr = "(.*)\\[\\[(.*)\\]\\](.*)";
        Pattern pattern = Pattern.compile(patternStr);
        Matcher matcher = pattern.matcher("");

        // Set the input
        matcher.reset("[[sdasd]] ddd [[ddssssssssssss]] vvvddd [[dd]] asdasda [[asdsa]] ");
...

提前致谢

最佳答案

您需要以下正则表达式:

\[\[(.+?)\]\]

然后将其转换为 Java 字符串:

\\[\\[(.+?)\\]\\]

PowerShell 测试:

PS Home:\> [regex]::Matches("[[sdasd]] ddd [[ddssssssssssss]] vvvddd [[dd]] asdasda [[asdsa]] ", '\[\[(.+?)\]\]') | ft -auto

Groups                               Success Captures             Index Length Value
------                               ------- --------             ----- ------ -----
{[[sdasd]], sdasd}                      True {[[sdasd]]}              0      9 [[sdasd]]
{[[ddssssssssssss]], ddssssssssssss}    True {[[ddssssssssssss]]}    14     18 [[ddssssssssssss]]
{[[dd]], dd}                            True {[[dd]]}                40      6 [[dd]]
{[[asdsa]], asdsa}                      True {[[asdsa]]}             55      9 [[asdsa]]

关于Java正则表达式只匹配双方括号中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6705793/

相关文章:

java - ConcurrentHashMap 作为缓存

java - 从网站中提取 Applet 的源文件

maven - 编译 nativetoascii maven 插件

Java,object.hashCode(值更改9和10数字)

javascript - 使用正则表达式删除没有内容或只有空白的 div

java - 当我运行 .jar 时,除命令提示符外,Swing 不会重新绘制

javascript - 尝试将 url 路径名与 RegEx 匹配

java - 匹配连续的单个字符作为整个单词

javascript - 使用数组中的保留字符创建正则表达式

c# - 我可以在不抛出异常的情况下测试正则表达式在 C# 中是否有效吗