Python 边界标记和 \& 符号在我的字符串中找不到匹配项



我只是在做

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)

最新更新