考虑这个文字:100美元
如果我想匹配100(使用前瞻),我写道:
\d{3}(?= dollars)
据我所知,该模式意味着:只有当(如果)后跟“美元”时才能找到3位数字
但是前瞻可以奇怪的方式使用;在上述文字中再次匹配100:
(?=\d{3} dollars).{3}
这怎么可能?我们如何解释第二次使用前瞻?
解决方法
记住,lookarounds是零宽度断言.这意味着它们在匹配时不会消耗字符.它们基本上是对字符串中给定点的检查.在第二个正则表达式中,引擎首先检查从字符串中的特定点开始查看内部的模式是否匹配,如果匹配,则此时匹配从该位置继续消耗字符(.{3}).