正则表达式 - 最后一次出现后的所有内容

Regex - everything after the last occurrence

我有这段文字:
ABC 关于天空的一切 ABC 和关于月亮的一切

我正在尝试编写一个正则表达式来获取最后一次出现 'ABC' 之后的所有内容:

示例:

ABC 关于天空的一切 ABC 和关于月亮的一切
关于月亮的一切

关于天空的ABC和关于月亮的ABC
关于月亮

我正在尝试下面的表达式,但它认为 ABC 是单独的字母,因此如果文本中的 'ABC' 之后有一个 'A',它将匹配错误:

[^ABC]*$

PS:我正在尝试一个不构成组的表达式,我正在使用 python3

如果不使用群组,您可以使用环视:

(?<=\bABC\s)(?!.*\bABC\b).*
  • (?<=\bABC\s) 正面回顾,断言 ABC 和左边的空白字符
  • (?!.*\bABC\b) 否定前瞻,断言右侧没有出现 ABC
  • .* 匹配任何字符 0+ 次(或者 .+ 如果至少应该有一个字符)

Regex demo | Python demo


如果你想在回顾断言中支持量词,你可以使用 PyPi regex module。例如

(?<=\bABC \d+ )(?!.*\bABC\b).*

Regex demo | Pyhon demo