我有一个 python 字符串:
s = 'filename 13.00 50850.8732503344475 37.11 abc'
为了找到格式为 nn.nn
的第二个字符串,我知道我可以这样做:
re.findall(r'.*(\b\d+\.\d+)',s)[0]
它发现:
'37.11'
但我想用 99.99 代替它。
我试过:
re.sub(r'.*(\b\d+\.\d+)','99.99',s)
但这只会产生:
'99.99 abc'
而我想要:
'filename 13.00 50850.8732503344475 99.99 abc'
显然我还不明白正则表达式是如何工作的。有人可以提供帮助吗?
最佳答案
您应该捕获需要保留的内容并在替换模式中使用明确的替换反向引用:
s = re.sub(r'(.*)\b\d+\.\d+',r'\g<1>99.99', s)
参见 Python demo和 regex demo .
图案细节
-
(.*)
- 第 1 组(其值由替换模式中的\g<1>
反向引用引用):尽可能多的除换行符以外的任何 0+ 个字符 -
\b
- 单词边界 -
\d+
- 1+ 位数 -
\.
- 一个点 -
\d+
- 1 个以上数字。
关于python - 如何使用正则表达式在 python 中正确替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57665192/