s = '!sopa !sop !sopaa !sopii'
使用单词边界时如何忽略
!
re.sub(r'\b\!sop\b', 'sopa', s)
输出:
'!sopa !sop !sopaa !sopii'
最佳答案
好像您想要这样的东西。
>>> s = '!sopa !sop !sopaa !sopii'
>>> re.sub(r'\B!sop\b', 'sopa', s)
'!sopa sopa !sopaa !sopii'
您的正则表达式将失败,因为在
\b
符号之前实际上没有!
退出。也就是说,从上面开始,仅当!
符号前面带有非单词字符时,您才尝试匹配它。 \b
在单词char和非单词字符之间匹配,反之亦然。 \B
在两个单词和两个非单词字符之间进行匹配。此处\B
实际上是在空格和!
之间,因为它们都是非单词字符。