You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则捕获组问题:无法正确捕获目标字符组与后续内容

正则表达式修正方案

你的问题出在第一个捕获组的分支结构上:原正则里的(?:#*|b*)是分支选择逻辑,正则引擎会优先尝试匹配#*,哪怕只匹配到0个#(空内容),也会判定该分支匹配成功,不会再尝试后续的b*,导致第一个组只能捕获开头的A-G字符,后续的b或#都被归入第二个组。

修正后的正则实现

把第一个捕获组的分支结构替换为字符集匹配,即可满足需求:

import re
sample = "Cbb-7" # for testing purposes
result = re.search(r"([A-G][#b]*)(.*)", sample).groups()
print(result)  # 输出: ('Cbb', '-7')

正则规则说明

  • ([A-G][#b]*):第一个捕获组,匹配以A-G开头,后续跟任意数量(包括0个)的#或b的字符串,完美覆盖Ab、Abb、C###、C等目标场景。
  • (.*):第二个捕获组,匹配第一个组之后的所有剩余内容;如果需要严格捕获**不含b和#**的内容,可替换为([^#b]*)。

多场景验证

  • 输入"Abb" → 输出('Abb', '')
  • 输入"C###" → 输出('C###', '')
  • 输入"C#-maj7" → 输出('C#', '-maj7')

内容的提问来源于stack exchange,提问作者Bernhard Wagner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:15:46