正则表达式匹配多个出现 IFF 另一个字符串



我真的希望这可以在正则表达式中解决,但我担心不是......

我正在寻找一个正则表达式,它将返回一个术语的多个匹配项,只有另一个术语出现在同一个字符串中。用一个例子可以更好地解释这一点。考虑:

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

最新更新