我想将所有&&
替换为and
。
例如,x&& && &&
应该变为x&& and and
。
我尝试了re.sub(' && ', ' and ', 'x&& && && ')
,但它没有用,第一个&&
已经消耗了空白,所以第二个不匹配。
然后我想到了非捕获组并试了但又失败了。
我该如何解决这个问题?
答案 0 :(得分:3)
您可以在此处使用非字边界。
>>> re.sub(r'\B&&\B', 'and', 'x&& && &&')
'x&& and and'
答案 1 :(得分:1)
(?:^|(?<=\s))&&(?=\s|$)
使用lookarounds
。不要只使用space
assert
。请参阅演示。
https://regex101.com/r/sS2dM8/39
re.sub('(?:^|(?<=\s))&&(?=\s|$)', 'and', 'x&& && &&')
输出:'x&& and and'
答案 2 :(得分:0)
这似乎是一个非常古老的帖子。任何寻找替代方法的人也可以使用以下正则表达式。
re.sub(r"(\s)(\&\&)(?=(\s))", r"\1and", a)