替换除字符串开头之外的所有子字符串实例

时间:2017-05-09 09:06:59

标签: python regex

我正在为一个公交系统处理大量资本不足的电台名称,并且想要去除像#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;正则表达式解决方案。

1 个答案:

答案 0 :(得分:2)

您可以使用\w更改\W的正面背面替换负面背后隐藏:

(?i)(?<=\W)the(?!\w)
    ^^^^^^^

(?<!\w)负面反馈可以表示为(?<=^|\W)(不适用于Python,BTW),我们只需要取出^替代版本。 (?<=\W)正向后方需要t左侧立即显示非单词字符。请参阅regex demo

Python 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