使用 Python 的正向后视中的量词

Quantifiers inside a positive look-behind using Python

我正在尝试仅在 lookbehind 积极标准满足时才捕获一个组。

输入字符串为以下之一

  1. 猫 5A、5B 和 5C
  2. 5A 类

正则表达式:

  1. (?P<cat_num>(?:(?<=((\b[c|C]at)[s]? )))5A) ==> 不正确,因为 lookbehind 中存在量词。
  2. (?P<cat_num>(?:(?<=((\b[c|C]at)(?=[s]?) )))5A) ==> 正确但在给出 Input 1 时不匹配“5A”。

要求:

使用 Python 正则表达式,当给出上述两个输入中的任何一个时,我想在捕获组 cat_num 中捕获“5A”。

您不需要回顾断言。您可以匹配数字之前的内容,并捕获命名捕获组 cat_num

中的值

使用 [cC]ats?

使 s 可选
\b[cC]ats? (?P<cat_num>5A)\b

Regex demo

或更广泛的匹配:

\b[cC]ats? (?P<cat_num>\d+[A-Z]+)\b

Regex demo