python - 指定组名时 re.sub() 行为怪异
问题描述
我想'.'
用一系列字符替换点 ( ),例如foo.bar
> fooDOTbar
,但前提是点不在两个数字之间,例如0.9
> 0.9
。所以我做了:
regex = re.compile(r'([a-zA-Z])(?P<dot>\.)([a-zA-Z])')
input_str = 'foo.bar'
output = regex.sub(r'DOT\g<dot>', input_str)
print(output)
'foDOT.ar'
这根本不是我所期待的。我试图用它替换.sub()
它.search()
似乎工作得很好(match.group('dot')
返回'.'
)。
解决方案
为什么你需要为你知道你会扔掉的东西命名捕获?我在谈论(?P<dot>\.)
。这就是你的做法:
>>> regex = re.compile(r'(?P<before>[a-zA-Z])(\.)(?P<after>[a-zA-Z])')
>>> regex.sub(r'\g<before>DOT\g<after>', input)
'fooDOTbar'
推荐阅读
- forms - Thymeleaf,默认值不会出现在我的更新表单中
- cassandra - 喜欢用“。”查询 春季JpaRepository中的字符串查询中的符号
- excel - 对多维 SSAS 的 DAX 查询不正确
- css - 没有 React 的 Material-UI / 只有普通的 HTML、CSS 和 JS?可能的?
- locust - Locust 在没有 docker 用户界面的分布式模式下不生成 failures.csv 和 expections.csv
- html - 有什么方法可以访问
页面内的标签? - vb.net - 按列分组并显示所有列值linq
- c# - 如何从soap服务c#中读取数据
- ios - EAGLContext presentRenderbuffer 导致死锁
- php - 一个函数的用户变量,在另一个函数中