我只想替换一个字符串中的特定单词。然而,其他一些单词里面有这个词,但我不希望它们被改变。
例如,对于下面的字符串,我只想将 z 字符串中的 x 替换为 y。如何做到这一点?
x = "112-224"
y = "hello"
z = "This is the number 112-224 not #112-224"
当我执行 re.sub(r'\b' + x + r'\b', y, z)
时,我得到 'This is the number hello not #hello '
。所以基本上不适用于这个正则表达式。我真的不擅长这个正则表达式的东西。正确的做法是什么?所以,我可以得到这是号码 hello,而不是 #112-224
。
最佳答案
这个怎么样:
pattern = r'(?<=[\w\s\n\r\^])'+x+r'(?=[\w\s\n\r$])'
完整的代码是:
x = "112-234"
y = "hello"
z = "112-234this is 112-234 not #112-234"
pattern = r'(?<=[\w\s\n\r\^])'+x+r'(?=[\w\s\n\r$])'
在这里,我在正则表达式中使用正向向后查找和正向向前查找,您可以了解有关 here 的更多信息。
正则表达式规定匹配项前面应带有 word character 、空格、换行符或行首,后面应跟空格、单词字符换行符或行尾。
注意:不要忘记在lookbehind中转义克拉^
,否则你最终会否定方括号中的所有内容。
关于Python Regex - 用另一个单词替换特定单词(不带哈希值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60238297/