如何在这个给定的场景中应用延迟量词?

时间:2014-11-05 11:15:45

标签: regex regex-greedy

我正在尝试将事件与正则表达式匹配:

to(.*?) CITY[\d]

针对

John from beautiful CITY1 in sdfsf to dsfs in sf to abc CITY2 to CITY3 for 3 days

我得到两场比赛:

to dsfs in sf to abc CITY2 
to CITY3

我的问题是我需要一个常规的exp使用,我可以得到一个匹配“到abc CITY2”而不是“到sf到abc CITY2的dsfs”。

我读到了懒惰的量词,但在这种情况下无法应用它。

1 个答案:

答案 0 :(得分:3)

\bto\b(?:(?!\bto\b).)*?CITY\d+

试试这个。看看演示。

http://regex101.com/r/iZ9sO5/7

在这里,我们使用否定前瞻来确保toto不匹配后的任何字符。因此,它会选择最近的toCity

(?!\bto\b)否定前瞻与

不匹配

.)*量化它