2016-11-12 50 views
1

基本上,我有一個字符串這樣蟒蛇正則表達式中刪除所有連續的重複EXCEPT WWW

wwwccccheapflightscom 
aaaamypage 
wwwregularexpressions 

現在我有這個,它去除了長度的所有連續的DUP大於3

re.sub(r"(\w)\1{2,}",'', string) 

但我不希望它刪除「www」,我也希望保持連續數字的第一次出現。因此,基於本例中,我想

wwwcheapflightscom 
amypage 
wwwregularexpressions 
+0

我不知道什麼是'wwwwccccheapflightscom'預期的結果? –

回答

1

添加排除模式爲www例如(?!www)你的代碼的開頭:

(?!www)(\w)\1{2,} 

演示:https://regex101.com/r/kXBAgV/1

如果你想保留第一次出現,替代與\1由@bobblebubble

漏接的演示的建議:https://www.regex101.com/r/4bjQlu/1

或者,您可以使用積極向後看(?<=)

注:這不會在Python的工作,但它會在PHP工作,

(?<=(\w)|(www\w))(?:\w)\1{2,} 

演示:https://regex101.com/r/kXBAgV/3

+0

如果我想保留第一次違規,我該怎麼辦?您提供的解決方案可以消除第一次出現。 例如 wwwcccaribeancheapcom 我希望它wwwcaribeancheapcom代替wwwaribeancheapcom –

+0

@chriszeng的嘗試更新的代碼。 – Ibrahim

+1

爲什麼不直接替換爲[capture \ 1](https://www.regex101.com/r/4bjQlu/1) –