正则表达式没有抓住这个群体

时间:2018-04-16 22:51:00

标签: regex

有谁可以告诉为什么下面的第1组只能捕获“400”而不是“123”? 谢谢!

图案:

((\d+)\s*)+.*LC\s*$

文本:

123 400 LC

“123”匹配“((\ d +)\ s *)+”和其他人匹配“。 LC \ s $”似乎也有效?但为什么正则表达式不使用这个?

3 个答案:

答案 0 :(得分:0)

/(\d)+/g

如果您只想捕获给定文本中的数字,则此正则表达式将起作用。

编辑:如果你想考虑LC和空间,那么试试这个正则表达式:

/(\d+[^LC\s*])/g

相同的解释: enter image description here

答案 1 :(得分:0)

你指定在((“一个或多个数字”)“空格”之后,可能会有任何字符,然后是“LC”

如果你想抓住你可以说的所有数字(\ d +)

你可以在这里检查你的东西http://pythex.org/

答案 2 :(得分:0)

您当前的方法不会分别捕获每个数字序列,因为您正在重复一个模式,该模式将一个匹配(最后一个匹配)保留在捕获组中。此外,在没有重复模式的情况下,正则表达式风格不会重新尝试匹配,而后续字符全部使用.*

如果你的口味支持前瞻你很幸运:

(\d+)\s*(?=.*LC\s*$)

Live demo