我正在尝试解决一个非常简单的问题,但我找不到任何解决方案。
我的字符串如下所示:" ...0.0..0.0...
"
我的正则表达式是:0[.]{1,3}0
我期待3场比赛:0.0,0..0,0.0 但不是这样,我只得到两个匹配:0.0和0.0。你能告诉我什么
答案 0 :(得分:1)
问题是当正则表达式第一次匹配时,它会使用与其匹配的输入字符串中的字符。所以在第一场比赛中,它匹配:
...0.0....0.0...
^^^
然后对于下一个匹配,它将考虑字符串的剩余部分
....0.0...
在那里,正如你所看到的,它只能找到一个匹配。
解决此问题的一种方法是使用零宽度前瞻断言,前提是您的正则表达式引擎支持它。所以你的正则表达式看起来像
0[.]{1,3}(?=0)
这意味着它将匹配最后的0
,但它不会消耗它。这种方法的问题是它不会在匹配中包含0。此问题的一个解决方案是自己之后添加0
。