我正在努力熟悉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;?取代
答案 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;也。这是不可取的。