我需要生成列表中数字的命名捕获
源数据示例
This is a comment on line 1
Here is another Comment Line 2
Log ID 1234,5555,2342
使用:(?<id>(\d+)*)
我将获取结果
1
2
1234
5555
2342
但是这回升了 1
和2
错误。我需要它来拾取仅记录 ID 后的元素。
我正在寻找一个将返回的正则表达式
1234
5555
2342
在名为 id
的命名组中
最佳答案
如果您的语言支持可变长度lookbehinds,您应该能够使用以下内容:
(?<=Log ID.*)(?<id>\d+)
我还对您的原始正则表达式进行了一些修改,因为我并没有真正看到命名捕获组内的附加捕获组或嵌套重复的意义 ((\d+)*
相当于 (\d*)
,但我认为您实际上需要 \d+
,因此它要求您匹配至少一位数字)。
如果您无法使用可变长度后向查找(大多数语言),那么您可能需要分两步执行此操作。首先将任何行与“日志 ID”匹配,然后查找这些行中的数字。
关于regex - 姓名捕获,需要号码列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10339247/