给定字符串:
s = '<Operation dedupeMode="normal" name="update">'
我想将重复数据删除模式更改为手动。例如,最终结果应该是:
s = '<Operation dedupeMode="manual" name="update">'
是否有办法使用 re.sub
只替换捕获的组而不替换其他内容?这是我到目前为止所拥有的,但它取代了所有内容,而不仅仅是捕获的组:
import re
s = '''<Operation dedupMode="normal" name="update">'''
re.sub(r'dedupMode="(normal|accept|manual|review)"', "manual", s)
# '<Operation manual name="update">'
最佳答案
您可以切换捕获组来捕获 dedupMode="和结尾的 "
(dedupMode=")(?:normal|accept|manual|review)(")
并替换为
\1manual\2
或者也许使用环视
(?<=dedupMode=")(?:normal|accept|manual|review)(?=")
并替换为
manual
对于选项,您可以使用非捕获组(?:
请注意,manual
也存在于替换中,可能会被省略,因为它与替换值相同。
关于python - re.sub 仅适用于捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59256253/