【发布时间】:2023-03-22 16:47:01
【问题描述】:
给定以下文本:
somerandomtext06251/750/somerandomtext/21399/10 79/20 8301
如何提取 06251/750、79/20、8301 并忽略 21399/10?
一般规则:
- 在随机字符串中匹配每组至少 2 位数字,后跟可选的 /,再后跟至少 2 位数字;对数字贪婪(尽可能多)
- 如果前面紧跟 / 则忽略完整匹配
我从以下匹配模式开始:
(?<invnr>\d{2,}/?\d{2,})
总的来说,它可以工作,但它只有一个问题:它也需要 21399/10。所以,我在后面添加了一个否定的lookbehind:
(?<!/)(?<invnr>\d{2,}/?\d{2,})
现在它忽略了 21399/10 的第一个数字(因为它前面是 /),但它仍然捕获了所有后续字符,即 1399/10。但我需要完全跳过 21399/10。
我如何进行后视以删除整个匹配并跳到下一个而不是只跳过一个数字?
【问题讨论】:
标签: .net regex regex-group negative-lookbehind