re.sub('a(b)','d','abc')
收益率dc
,没有adc
。
为什么要re.sub
替换整个捕获组,而不仅仅是捕获组“(b)”?
因为应该替换整个模式:
返回通过用替换repl替换字符串中模式中最左边的非重叠出现而获得的字符串。
如果仅替换某些子组,则具有多个组的复杂正则表达式将不起作用。有几种可能的解决方案:
re.sub('ab', 'ad', 'abc')
-我的最爱,因为它非常易读和明确。re.sub('(a)b', r'\1d', 'abc')
repl
参数,并使其处理该Match
对象并返回所需的结果。re.sub('(?<=a)b', r'd', 'abxb')
yields adxb
。将?<=
在该组的开头说:“这是一个超前”。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句