正则表达式:如何在模式之前包含第一个匹配项?

时间:2013-12-10 10:25:38

标签: regex regex-lookarounds regex-greedy

我的文字是:

120 something 130 somethingElse Paris

我的目标是捕获130 somethingElse Paris,这意味着只有最后一次出现的数字之前 Paris

我试过了:

\d+.*Paris

但这会捕获WHOLE字符串(从第一次出现的数字开始)

规则是:

  • Paris之前捕获所有内容,直到找到第一个数字。

有任何线索吗?

问候

5 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

/(\d+[^\d]*Paris)/gi

http://jsfiddle.net/rooseve/XDgxL/

答案 1 :(得分:1)

减少追溯而不依赖贪婪:

\d+[^0-9]*Paris

答案 2 :(得分:1)

答案 3 :(得分:0)

你应该加一个?在*之后让它变得不贪婪。像这样:

 \d+.*?Paris

答案 4 :(得分:0)

您可以使用此模式:

(\d+\D*?)+Paris

捕获组的其他出现被最后一次覆盖。

延迟量词*?用于强制模式停在第一个单词“Paris”。否则,在一个包含多个单词“Paris”的字符串中,该模式将使用贪婪的量词返回最后一个单词“Paris”之后的最后一个组。