使用 Python 的正向后视中的量词
Quantifiers inside a positive look-behind using Python
我正在尝试仅在 lookbehind 积极标准满足时才捕获一个组。
输入字符串为以下之一
- 猫 5A、5B 和 5C
- 5A 类
正则表达式:
(?P<cat_num>(?:(?<=((\b[c|C]at)[s]? )))5A)
==> 不正确,因为 lookbehind 中存在量词。
(?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
或更广泛的匹配:
\b[cC]ats? (?P<cat_num>\d+[A-Z]+)\b
我正在尝试仅在 lookbehind 积极标准满足时才捕获一个组。
输入字符串为以下之一
- 猫 5A、5B 和 5C
- 5A 类
正则表达式:
(?P<cat_num>(?:(?<=((\b[c|C]at)[s]? )))5A)
==> 不正确,因为 lookbehind 中存在量词。(?P<cat_num>(?:(?<=((\b[c|C]at)(?=[s]?) )))5A)
==> 正确但在给出Input 1
时不匹配“5A”。
要求:
使用 Python 正则表达式,当给出上述两个输入中的任何一个时,我想在捕获组 cat_num
中捕获“5A”。
您不需要回顾断言。您可以匹配数字之前的内容,并捕获命名捕获组 cat_num
使用 [cC]ats?
\b[cC]ats? (?P<cat_num>5A)\b
或更广泛的匹配:
\b[cC]ats? (?P<cat_num>\d+[A-Z]+)\b