正则表达式在Java中搜索{{和}}之间的关键字

Har*_*arg 2 java regex regex-lookarounds

Java 之间{{和之间的Regex搜索关键字是什么?}}

String = "kksdkjhsd {{one}} sdkjhsdjksd {{two}}" 我想要的例子output = ["one","two"];

我已经尝试过在Java Regex中建议的方法来获取大括号之间的数据.

单支撑可以正常工作,但我不能将它扩展为双花({{ }})括号

fre*_*dev 5

此代码应符合您的要求:

Matcher m = Pattern.compile("\\{\\{([^\\}]*)\\}\\}").matcher(word);

while (m.find()){
    System.out.println(m.group(1));
}
Run Code Online (Sandbox Code Playgroud)

此正则表达式获取{{ }}其中不是}字符的所有文本.此正则表达式不处理大小写限制{{{}}},在这种情况下返回,{ 因为只有前两个{{匹配.

如果您需要一个与范围内的单个花括号匹配的正则表达式,我们需要一个更复杂的解决方案.

另一件事,使用字符类([^\\}]*)使正则表达式更有效(.*?),因为它将停止搜索第一个字符,而不是一个封闭的大括号.