我将尝试在字符串
s
中替换 Hello
为另一个单词,但只有当该单词不被引号 " " 或 ' ' 包围时。假设替换单词为 Matt,则输入如下:s = 'Hello How Are you, "hey Hello", \'ney Hello\'. Hello I\'m great'
期望的输出:
s = 'Matt How are you, "hey Hello", \'ney Hello\'. Matt I\'m great '
我搜索了一些资料,发现这段代码,稍作修改之后,我成功替换了单引号中的文字,但是在双引号中并没有成功。
import re
def replace_method(match):
if match.group(1) is None:
return match.group()
return match.group().replace("Hello", "Matt")
s = 'Hello How Are you, "hey Hello", \'ney Hello\'. Hello I\'m great'
output = re.sub(r"'[^']*'|([^']*)", replace_method, s)
print(output)
编辑:
谢谢你们的回答,但我错过了解释一些重要的东西(在成功执行代码后,我第一次注意到),“显然”,我不希望这个句子:
s = "Hellona, how are you"
变成
s = "Markna, how are you"
因此,正则表达式应包括要替换的单词周围没有数字或字母。
:
,在正则表达式中使用了单词边界\b
。 - user557597