gpt4 book ai didi

python - 正则表达式中的可选点

转载 作者:IT老高 更新时间:2023-10-28 20:52:08 26 4
gpt4 key购买 nike

假设我想将 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com