Regex 如何在给定场景中应用惰性量词?

Regex 如何在给定场景中应用惰性量词?,regex,regex-greedy,Regex,Regex Greedy,我正在尝试将一个事件与正则表达式匹配: to(.*?) CITY[\d] 到(.*)城市[\d] 反对 John from beautiful CITY1 in sdfsf to dsfs in sf to abc CITY2 to CITY3 for 3 days 约翰从sdfsf的美丽城市1到sf的dsfs再到abc城市2到城市3,为期3天 我有两个匹配项: to dsfs in sf to abc CITY2 to CITY3 至sf中的DSF至abc CITY2 到城市3 我的问题是,

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

to(.*?) CITY[\d] 到(.*)城市[\d] 反对

John from beautiful CITY1 in sdfsf to dsfs in sf to abc CITY2 to CITY3 for 3 days 约翰从sdfsf的美丽城市1到sf的dsfs再到abc城市2到城市3,为期3天 我有两个匹配项:

to dsfs in sf to abc CITY2 to CITY3 至sf中的DSF至abc CITY2 到城市3 我的问题是,我需要一个常规的exp,使用它我可以得到一个匹配“到abc CITY2”,而不是“到sf中的dsfs到abc CITY2”

我读过关于惰性量词的文章,但无法将其应用到这个场景中

\bto\b(?:(?!\bto\b).)*?CITY\d+
试试这个。看演示

在这里,我们使用负向前看来确保
to
之后的任意字符与
to
不匹配。因此,它将选择最近的
to
to
城市

(?!\b to\b)
反向前瞻与不匹配


)*
量化它

我认为您需要将表达式/逻辑更改为类似的形式。谢谢,它很有效@哈姆扎建议使用更干净的正则表达式。