正则表达式:比赛之前/之后

时间:2014-05-28 18:16:59

标签: regex lookaround

请考虑以下文字:100 dollars

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

\d{3}(?= dollars)

据我所知,该模式意味着:仅在(如果)后跟 " dollars"

时找到3位数字

但是前瞻可以奇怪的方式使用;再次在上述文字中匹配100

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

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

1 个答案:

答案 0 :(得分:2)

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