从两个字符串中捕获一串数字

Capture a string of digits from within two strings

提问人:Herman Lewis 提问时间:10/31/2023 最后编辑:user3783243Herman Lewis 更新时间:11/11/2023 访问量:55

问:

我正在尝试从一串数据中捕获一串数字。我尝试捕获的数字以 109 开头,后跟一个空格、2 位数字、一个逗号和一个空格。

我试图在第一行捕获; 在第二行;在第三行。444444444445555544466666

1号线:109STAYPAY (HK) LTD,OCMT,HKD123,55, 44444444 99,99 ,RFB,WPAANNRFFB 2号线:109FLAYPAY (HK) LTD,OCMT,HKD456,79, 44455555 88,88 ,RFB,WPAANNRFEF
3号线:109HOLLPAY PTE LTD 44466666 77,77 ,RFB,WPAANNREXU

enter image description here

我尝试了以下表达式:

(?<=108)(.*)(?= [0-9][0-9],[0-9][0-9] ,) 

但它并没有为我提供我正在寻找的信息。

表达式正则表达式环视

评论

2赞 user3783243 10/31/2023
109 and is followed by a space您的示例后面都没有空格。也不确定为什么你要在正则表达式中寻找,这是你的实际示例和代码吗?109108109
1赞 Wiktor Stribiżew 10/31/2023
我怀疑你想要109.*? \K\d+(?= \d{2},\d{2} ,)
0赞 Herman Lewis 10/31/2023
我很抱歉。这应该是 109。当线以 108 或 109 开头时,有没有办法灵活调整?
0赞 sln 10/31/2023
例如,您为什么要尝试仅匹配?因为除非您使用某些 RX 引擎,否则您将不得不满足于在捕获组中获取该数字。这意味着很多都会匹配。对不起,没有办法避免这种情况。换句话说,如果您必须匹配一堆前置文本以及4444444444,那么使用“向前看”断言是没有好处的。4444444
0赞 sln 10/31/2023
至于 108/109,就是这样做的 此外,支持前文本、可变长度的引擎会看断言的背后 - 过滤器是支持 .10[89]\K

答:

0赞 Reilas 11/11/2023 #1

利用周围的文本来标识值。

\d{8}(?= \d\d)

我想您甚至可以捕获和评估后续数字。

\d{8}(?= ((\d)\2),\1)

或者,使用捕获模式

109.+?(\d{8})