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实际上是在空格和!之间,因为它们都是非单词字符。

10-07 18:25