作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
假设我想将 Mr.
和 Mr
的所有匹配项替换为 Mister
。
我正在使用以下正则表达式:\bMr(\.)?\b
来匹配 Mr.
或仅匹配 Mr
。然后,我使用 re.sub()
method进行替换。
让我不解的是,它正在用 Mister.
代替 Mr.
。为什么要在末尾保留点 .
?看起来它与 Mr\.
案例不匹配,而只是 Mr
.
import re
s="a rMr. Nobody Mr. Nobody is Mr Nobody and Mra Nobody."
re.sub(r"\bMr(\.)?\b","Mister", s)
返回:
'a rMr. Nobody Mister. Nobody is Mister Nobody and Mra Nobody.'
我也尝试了以下方法,但也没有运气:
re.sub(r"\b(Mr\.|Mr)\b","Mister", s)
我想要的输出是:
'a rMr. Nobody Mister Nobody is Mister Nobody and Mra Nobody.'
^ ^
no dot this should be kept as it is
最佳答案
我认为您想捕获 'Mr'
后跟 '。'
或单词边界:
r"\bMr(?:\.|\b)"
使用中:
>>> import re
>>> re.sub(r"\bMr(?:\.|\b)", "Mister", "a rMr. Nobody Mr. Nobody is Mr Nobody and Mra Nobody.")
'a rMr. Nobody Mister Nobody is Mister Nobody and Mra Nobody.'
关于python - 正则表达式中的可选点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26907640/
我是一名优秀的程序员,十分优秀!