fed*_*qui 19 python regex python-2.7
说我想要替换的所有比赛Mr.
,并Mr
用Mister
.
我使用以下正则表达式:\bMr(\.)?\b
匹配Mr.
或只是匹配Mr
.然后,我使用该re.sub()
方法进行替换.
更令人不解的我的是,它正在取代Mr.
用Mister.
.为什么这会保持点.
到底?看起来它不符合Mr\.
案例但只是Mr
.
import re
s="a rMr. Nobody Mr. Nobody is Mr Nobody and Mra Nobody."
re.sub(r"\bMr(\.)?\b","Mister", s)
Run Code Online (Sandbox Code Playgroud)
返回:
'a rMr. Nobody Mister. Nobody is Mister Nobody and Mra Nobody.'
Run Code Online (Sandbox Code Playgroud)
我也试过以下,但也没有运气:
re.sub(r"\b(Mr\.|Mr)\b","Mister", s)
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
'a rMr. Nobody Mister Nobody is Mister Nobody and Mra Nobody.'
^ ^
no dot this should be kept as it is
Run Code Online (Sandbox Code Playgroud)
jon*_*rpe 15
我想你要捕获'Mr'
后跟一个'.'
或一个单词边界:
r"\bMr(?:\.|\b)"
Run Code Online (Sandbox Code Playgroud)
正在使用:
>>> 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.'
Run Code Online (Sandbox Code Playgroud)
re.sub(r"\bMr\.|\bMr\b","Mister", s)
Run Code Online (Sandbox Code Playgroud)
试试这个.你需要删除\b
之后.
输出:a rMr. Nobody Mister Nobody is Mister Nobody and Mra Nobody.'
之所以\bMr(\.)?\b
之间没有因为工作.
而space
没有单词边界.
有三种不同的职位符合词边界:
归档时间: |
|
查看次数: |
2777 次 |
最近记录: |