Regex 正则表达式-缺少一些匹配项

Regex 正则表达式-缺少一些匹配项,regex,Regex,我试图解决一个非常简单的问题,但我找不到任何解决办法。 我的字符串如下所示:“…0.0..0.0…”” 我的正则表达式是:0[.]{1,3}0 我期待3场比赛:0.0,0..0,0.0 但事实上,我只得到了两个匹配:0.0和0.0。您能告诉我什么问题吗?问题是,当正则表达式第一次匹配时,它会使用已匹配的输入字符串中的字符。因此,在第一个匹配中,它与: ...0.0....0.0... ^^^ 因此,对于下一个匹配,它将考虑字符串的其余部分。 ....0.0... 在那里,正如你所看到的

我试图解决一个非常简单的问题,但我找不到任何解决办法。 我的字符串如下所示:“
…0.0..0.0…”

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

我期待3场比赛:0.0,0..0,0.0
但事实上,我只得到了两个匹配:0.0和0.0。您能告诉我什么问题吗?问题是,当正则表达式第一次匹配时,它会使用已匹配的输入字符串中的字符。因此,在第一个匹配中,它与:

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

因此,对于下一个匹配,它将考虑字符串

的其余部分。
....0.0...
在那里,正如你所看到的,它只能找到一个匹配项

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

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

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

谢谢,这是一个很好且聪明的解决方法。我唯一需要做的就是在匹配字符串的末尾附加“0”。你认为这是唯一的解决方案吗?我认为前瞻性解决方案是这里最简单的解决方案(同样,前提是你的正则表达式引擎支持它)。如果正则表达式引擎支持lookaheads,那么“更好”的解决方案是(因为所有值都将被捕获到组1中,并且不需要在末尾添加
0
s)。它比redneb的模式慢一点。是的,它在Python和Notepad++中也能工作。所以实际上我的问题解决了