我正在为一个公交系统处理大量资本不足的电台名称,并且想要去除像#34; at"和""。到目前为止,我可以匹配我想要的所有实例,除了我无法弄清楚如何不匹配字符串开头的实例。 (即防止改变"事情"事情"事情")
到目前为止,这是我的代码:
>>>re.sub("(?i)(?<!\w)the(?!\w)", "zzz", "The Thing To The Theme of Athens, (The) Goethe")
'zzz Thing To zzz Theme of Athens, (zzz) Goethe'
他是我目前的解决方法:
>>>re.sub("(?i)(?<![\w|])the(?!\w)", "zzz", "|" + "The Thing To The Theme of Athens, (The) Goethe")[1:]
'The Thing To zzz Theme of Athens, (zzz) Goethe'
这种解决方法显然不理想,因为我更喜欢纯粹的&#34;&#34;正则表达式解决方案。
答案 0 :(得分:2)
您可以使用\w
更改\W
的正面背面替换负面背后隐藏:
(?i)(?<=\W)the(?!\w)
^^^^^^^
(?<!\w)
负面反馈可以表示为(?<=^|\W)
(不适用于Python,BTW),我们只需要取出^
替代版本。 (?<=\W)
正向后方需要在t
左侧立即显示非单词字符。请参阅regex demo。
import re
res = re.sub(r"(?i)(?<=\W)the(?!\w)", "zzz", "The Thing To (The) Theme of Athens, The Goethe")
print(res) # => The Thing To (zzz) Theme of Athens, zzz Goethe