2015-09-04 87 views
3

我想用and替換所有出現的&&。例如,x&& && &&應該變成x&& and and如何用正則表達式替換多個重疊模式?

我試過re.sub(' && ', ' and ', 'x&& && && '),但它沒有工作,第一個&&已經消耗了空白,所以第二個不匹配。

然後我想到了非捕獲組並嘗試失敗了。

我該如何解決這個問題?

回答

0
(?:^|(?<=\s))&&(?=\s|$) 

使用lookarounds。不消耗space只是assert。看到演示。

https://regex101.com/r/sS2dM8/39

re.sub('(?:^|(?<=\s))&&(?=\s|$)', 'and', 'x&& && &&') 

輸出:'x&& and and'

+0

此代碼的輸出是''×&&和和‘','不’×&&和and'' – PabTorre

+1

@pabtorre現在有一個typo.check – vks

3

你可以在這裏使用非單詞邊界。

>>> re.sub(r'\B&&\B', 'and', 'x&& && &&') 
'x&& and and'