5

考虑这段文字:100 dollars

如果我想匹配100(使用前瞻),我写了这个:

\d{3}(?= dollars)

据我所知,该模式意味着:仅当(如果)后跟时才找到 3 位数字 " dollars"

但是可以以一种奇怪的方式使用前瞻;再次匹配100上述文本:

(?=\d{3} dollars).{3}

这怎么可能?我们如何解释前瞻的第二次使用?

4

1 回答 1

2

请记住,环视是零宽度断言。这意味着它们在匹配时不会消耗字符。它们基本上是对字符串中给定点的检查。在第二个正则表达式中,引擎首先检查字符串中的特定点是否与环顾内的模式匹配,如果匹配,则这次通过消耗字符 ( .{3}) 从该位置继续匹配。

于 2014-05-28T18:20:21.270 回答