如何使用re.sub
来分组?
我希望它用其他值覆盖3
当前:
XYZ.Value = 3
;之后:
XYZ.Value = 5
;
现在我的潜点看起来像这样:
name = XYZ
value = 5
content = XYZ.Value = 5
re.sub(r'(%s\.Value\s*=\s*)([^;]+)' %name, r'\1 ' + value, content)
这不起作用,因为它在覆盖值后不断添加额外的空格' '
:
XYZ.Value = 5;
< --- 2个空格而不是1个
我也尝试过使用分组\g<2>
re.sub(r'(%s\.Value\s*=\s*)([^;]+)' %name, r'\1\g<2>' + value, content)
然后它继续添加现有值而不覆盖它:
输出:
XYZ.Value = 3
答案 0 :(得分:1)
re.sub(r'(%s\.Value\s*=\s*)([^;]+)' %name, r'\g<1>' + value, content)
似乎会:
3
之前的所有空格捕获到组1中,并且\g<n>
),允许使用后面的任何数字。请参阅Python demo:
import re
name = 'XYZ'
value = '5'
content = 'XYZ.Value = 5'
print(re.sub(r'(%s\.Value\s*=\s*)([^;]+)' %name, r'\g<1>' + value, content))
# => XYZ.Value = 5
答案 1 :(得分:0)
在您的示例中,您可以使用值“5”替换数字:
>>> import re
>>> name = 'XYZ'
>>> value = 5
>>> content = 'XYZ.Value = 5'
>>> re.sub('\d+', str(value), content)
'XYZ.Value = 5'