替换所有出现的[&lt; <somewords>&gt;]

时间:2017-10-28 02:19:01

标签: python regex

我正在努力熟悉python中的正则表达式并使用类似的字符串:

string = "<<NAME>><<TIME>> (<<NAME>>) good <<NAME>><<NAME>> luck<<NAME>>START <<NAME>>"
# I try the following: 
output = re.sub(r'\b<<NAME>>\b', "1234", string)

然而,输出打印出完全相同的东西。我以为\b会隔离我正在寻找的单词并替换它。我该如何解决这个问题,以便每个<<NAME>>将被&#34; 1234&#34;?取代

2 个答案:

答案 0 :(得分:1)

The documentation\b的定义:

  

\b被定义为\w\W字符之间的边界(反之亦然),或\w与字符串的开头/结尾之间的边界< / p>

例如,'<'' '都是\W<<TIME>>和空格之间没有边界。因此,\b不匹配。

对于您的小例子,请尝试:

string.replace('<<NAME>>', '1234')

如果您确实需要正则表达式,只需删除\b

即可
re.sub('<<NAME>>', '1234', string)

答案 1 :(得分:0)

试试此代码

for word in word_list:
    New_content = re.sub(r"\b"+word+r"\b", " *** ", old_content, flags=re.I)

希望这会对你有所帮助。

注意:&#34; ***&#34;是一个字符串,您想要替换所需的字符串。如果您只想删除,请使用&#34;&#34;仅

此代码将确保仅删除所需的单词而不删除子字符串。即如果你想删除单词&#34;是&#34;,简单删除单词&#34;是&#34;来自&#34;这个&#34;也。这是不可取的。