python - Python 替换使用正则表达式找到的所有匹配项
问题描述
在 python 中,尝试替换使用正则表达式找到的所有出现的字符串,例如:
'10am 11pm 13am 14pm 4am'
变成
'10 am 11 pm 13 am 14 pm 4 am'
我试过了
re.sub('([0-9].*)am(.*)', r'\1 am \2', ddata)
但这只会替换最后一次出现。
和
import re
regex = re.compile('([0-9].*)am+', re.S)
myfile = '10am 11pm 13am 14pm 4am'
myfile2 = regex.sub(lambda m: m.group().replace(r'am',r" am ",1), myfile)
print(myfile2)
仅替换 'am' 的第一次出现
对我来说预期的结果'10 am 11pm 13 am 14pm 4 am'
解决方案
对数字和“am”或“pm”字符串使用捕获组,然后用组之间的空格替换。
import re
s = '10am 11pm 13am 14pm 4am'
subbed = re.sub(r'(\d+)([ap]m)', r'\1 \2', s)
print(subbed)
# 10 am 11 pm 13 am 14 pm 4 am
推荐阅读
- java - JDBC 的结果集给了我两次查询的第一行。为什么?
- sql - 如何从sql查询中获取上一个数据行?
- spring - 具有多个 orm.xml 文件的 Spring Data JPA
- javascript - 使用 Web 套接字的远程对象
- html - 面包屑分隔符单击
- symfony - 来自供应商 Bundle 的 Symfony services.yaml 绑定参数
- android - 在Android 10.0上创建文件路径的正确方法
- flutter - 颤振'LatLng'未定义
- ios - 如果两个应用程序具有不同的开发人员但安装了相同的 SDK,iOS DeviceCheck 令牌能否在两个应用程序中保持相同?
- google-cloud-platform - 无法使用服务帐户调用云功能