我想用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