正则表达式只匹配一次,不是全部

时间:2016-01-05 13:38:21

标签: java regex

我有一个我想要匹配的字符串,其中包含大括号,我想用Java中的正则表达式解析。

字符串如下:

#{apgarscore} >= 0 && #{apgarscore} < 4 && #{apgarcomment} == ''

我尝试使用#\{(.+)\}

结果是由于某种原因匹配

apgarscore} >= 0 && #{apgarscore} < 4 && #{apgarcomment

而不是三个单独的值。

我用here测试了它,结果相同。

任何人都可以帮助我理解我需要采取哪些不同的行动吗?

1 个答案:

答案 0 :(得分:2)

问题在于.+是贪婪的。这意味着它会尝试匹配尽可能多的字符。为了使它不贪婪,在此之后添加一个问号。

#\{(.+?)\}

See it in action