Regex 正则表达式不';我没赶上那群人

Regex 正则表达式不';我没赶上那群人,regex,Regex,谁能告诉我为什么下面的第一组只抓到“400”而不是“123”? 谢谢 模式: ((\d+)\s*)+.*LC\s*$ 正文: 123400 LC “123”匹配“(\d+)\s*)+”和其他匹配“.LC\s$”似乎也适用?但是为什么正则表达式不使用这个呢 /(\d)+/g 如果您只想捕获给定文本中的数字,则此正则表达式将起作用 编辑:如果你也想考虑LC和空间,那么试试这个正则表达式: /(\d+[^LC\s*])/g 对此的解释如下: 您指定((“一个或多个数字”)“空白”)后面可能有任何

谁能告诉我为什么下面的第一组只抓到“400”而不是“123”? 谢谢

模式:

((\d+)\s*)+.*LC\s*$
正文:

123400 LC

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

/(\d)+/g
如果您只想捕获给定文本中的数字,则此正则表达式将起作用

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

/(\d+[^LC\s*])/g
对此的解释如下:

您指定((“一个或多个数字”)“空白”)后面可能有任何字符,然后是“LC”

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


您可以在此处检查您的资料

您当前的方法不会单独捕获每个数字序列,因为您重复的模式会在捕获组中留下一个匹配项(最后一个匹配项)。此外,如果没有重复模式,当以下字符都被
*
使用时,regex-flavor不会重新尝试匹配

如果您的口味支持lookaheads,那么您很幸运:

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

什么是语言或工具?如果flavor支持lookaheads,那么您很幸运,我用python和一个可能使用.net语言的小型表达式进行了测试,那么正则表达式适合您。确保设置
m
标志:
(?m)(\d+)\s*(?=.*LC\s*$)
。我添加了一个答案。我需要LC,因为来自多行的文本,我只需要带有LC\s*$end“123”match”((\d+)\s*)+“和其他匹配项的行,“*LC\s*$”似乎也可以吗?但是为什么regex不用这个?谢谢!不理解,由于嵌套组适用于“400 LC”,为什么正则表达式可以将“400”视为“.*”,然后得到“123”?在Python中无法访问由重复捕获组匹配的每个部分(但在.NET中可用)如果这个解决方案帮助和正确的话,你可以考虑点击投票或接受答案,点击左边的复选标记和上箭头图标。谢谢,我刚刚试着接受你的回答,但是得到提醒我的声誉不到15,所以它只是记录。。。