我只是在做
strn="india pp "
strn_n=re.sub('\bp{2}\b',' and ',strn)
print strn_n
我的输出是印度和 - 按预期工作
但是当我尝试使用
strn="india && "
strn_n=re.sub('\b&{2}\b',' and ',strn)
print strn_n
我期待印度和[因为&&应该被替换]
但没有发现它像我预期的那样被替换了。
有人可以指出为什么边界标签不适用于&
,而在我的第一个示例中它适用于普通字符
b
在单词边界(^w|w$|Ww|wW)
断言位置,因此引擎无法匹配第二个示例中的b&b
。
您可以使用 lookaround 实现您想要的内容,方法是匹配一个不后跟任何非空格字符且前面没有空格字符的&&
:
(?<!S)&&(?!S)
注意:您不需要转义&
字符,它没有任何特殊的正则表达式含义,也足够b
,无需双重转义。
b
不会匹配非单词字符作为&
,您可以使用W
:
strn_n=re.sub('W&{2}W',' and ',strn)