我想用and
替换所有出现的&&
。例如,x&& && &&
应该变成x&& and and
。如何用正则表达式替换多个重叠模式?
我试过re.sub(' && ', ' and ', 'x&& && && ')
,但它没有工作,第一个&&
已经消耗了空白,所以第二个不匹配。
然后我想到了非捕获组并尝试失败了。
我该如何解决这个问题?
我想用and
替换所有出现的&&
。例如,x&& && &&
应该变成x&& and and
。如何用正则表达式替换多个重叠模式?
我试过re.sub(' && ', ' and ', 'x&& && && ')
,但它没有工作,第一个&&
已经消耗了空白,所以第二个不匹配。
然后我想到了非捕获组并尝试失败了。
我该如何解决这个问题?
(?:^|(?<=\s))&&(?=\s|$)
使用lookarounds
。不消耗space
只是assert
。看到演示。
https://regex101.com/r/sS2dM8/39
re.sub('(?:^|(?<=\s))&&(?=\s|$)', 'and', 'x&& && &&')
输出:'x&& and and'
你可以在这里使用非单词边界。
>>> re.sub(r'\B&&\B', 'and', 'x&& && &&')
'x&& and and'
此代码的输出是''×&&和和‘','不’×&&和and'' – PabTorre
@pabtorre现在有一个typo.check – vks