python - 如何使用正则表达式在 python 中正确替换

标签 python regex

我有一个 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 demoregex demo .

图案细节

  • (.*) - 第 1 组(其值由替换模式中的 \g<1> 反向引用引用):尽可能多的除换行符以外的任何 0+ 个字符
  • \b - 单词边界
  • \d+ - 1+ 位数
  • \. - 一个点
  • \d+ - 1 个以上数字。

关于python - 如何使用正则表达式在 python 中正确替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57665192/

相关文章:

python - 在数据框中连接包含 NaN 的列表列

java - 创建正则表达式匹配数组(多行)

.net - .net 中 Java 的 "LookingAt()"是否等效?

regex - _@[^@]*@ 在 bash 中

regex - Grok 调试 - 仅首先匹配正则表达式未按预期工作

python - 在 seaborn Pairgrid 中绘制下三角

python - 将 python 脚本捆绑到 OS X 应用程序中,但是

regex - 在 R 中的字符串中插入字符

python - 通过 Selenium 启动 Chrome

python - 使用 Python 为 Asterisk 编程 fastAGI?