我真的希望这可以在正则表达式中解决,但我担心不是......
我正在寻找一个正则表达式,它将返回一个术语的多个匹配项,只有另一个术语出现在同一个字符串中。用一个例子可以更好地解释这一点。考虑:
The numbers are 144, 424, and 345. Not 45.
我只想匹配"144"、"424"和"345"。(任何 3 位数字) - 但前提是它们在之前的某个地方遵循术语">数字"。所以下面的附加示例:
The numbers we are looking for: 234 & 992
应仅返回"234"和"992"。
以下句子不应匹配任何内容:
Some examples: 234, 244 and 12
我以为我正在使用以下正则表达式:
(?<=numbersb)(?:.|n)*?b(d{3})b
但它只匹配第一个数字。我想要实现的目标可能吗?在这里,任何前瞻或后视的方式似乎都行不通。出于确切的原因,我仅限于一个正则表达式,并且我无法选择在事后有选择地访问单个捕获组。所以寻找一种纯粹的正则表达式方法!
您可以将此正则表达式与G
一起使用:
(?:bnumbersb|(?!^)G).*?b(d{3})b
正则表达式演示
G
在上一个匹配的末尾或第一个匹配项的字符串开头断言位置。- 线路开始时匹配
G
(?!^)
避免在