正则表达式 - 缺少一些比赛

时间:2016-09-24 23:34:13

标签: regex

我正在尝试解决一个非常简单的问题,但我找不到任何解决方案。 我的字符串如下所示:" ...0.0..0.0..."

我的正则表达式是:0[.]{1,3}0

我期待3场比赛:0.0,0..0,0.0 但不是这样,我只得到两个匹配:0.0和0.0。你能告诉我什么

1 个答案:

答案 0 :(得分:1)

问题是当正则表达式第一次匹配时,它会使用与其匹配的输入字符串中的字符。所以在第一场比赛中,它匹配:

...0.0....0.0...
   ^^^

然后对于下一个匹配,它将考虑字符串的剩余部分

....0.0...

在那里,正如你所看到的,它只能找到一个匹配。

解决此问题的一种方法是使用零宽度前瞻断言,前提是您的正则表达式引擎支持它。所以你的正则表达式看起来像

0[.]{1,3}(?=0)

这意味着它将匹配最后的0,但它不会消耗它。这种方法的问题是它不会在匹配中包含0。此问题的一个解决方案是自己之后添加0