Python字符串解码问题:正则表达式无法正确处理字符重复逻辑
修复字符串解码的正则匹配问题
原代码的核心问题在于正则表达式写法错误,导致无法正确捕获所有需要处理的字符:
- 原正则
[\d*]是匹配单个数字或星号,而非“可选的数字前缀”;[^d]是匹配除小写字母d外的任意字符,而非“非数字字符”,这两个错误导致大量字符被遗漏,仅匹配到了带数字前缀的C字符。 - 另外,变量名
list覆盖了Python内置类型,不建议使用。
修复后的代码
import re def decode(txt): parts = [] # 匹配规则:可选的数字前缀 + 单个非数字字符 for cnt_str, char in re.findall(r"(\d*)(\D)", txt): # 无数字前缀时默认重复1次 count = int(cnt_str) if cnt_str else 1 parts.append(char * count) return "".join(parts)
测试验证
输入:"2CACA2CACA3CACACA3CAC"
输出:"CCACACCACACCCACACACCCAC",与期望结果完全一致。
正则规则说明
(\d*):捕获0个或多个数字,对应重复次数的前缀(没有数字时为空字符串)(\D):捕获单个非数字字符,对应需要重复的目标字符
内容的提问来源于stack exchange,提问作者vanquish
相关产品推荐
相关产品推荐

