2017-08-04 55 views
5

Alternatif küçük harfli karakterlerin kalıplarını eşlemek istiyorum. regex - alternatif karakterlerin eşleşme modeli

ababababa -> match 

Bu

([a-z][a-z])+[a-z] 

çalıştı ama bu Sen alternatif küçük harfleri maç için 2 arka referansla bu normal ifadeler kullanabilirsiniz çok

ababxyaba 
+0

"dalgalı" veya karakterlerin sadece "dengesiz numarası"? İkincisi ise, kalıbı '^' ve '$' ankrajları ile kapatın. –

+0

Alternatif küçük harfli karakterler ne demek istiyorsun? – marvel308

+0

aynı karakterlerden ikisinin bir dönüşümünü içeren bir dize -> xyxyxyxyxy değil ama xyxyxyabxyxy değil – cmplx96

cevap

10

bir maç olacaktır:

^([a-z])(?!\1)([a-z])(?:\1\2)*\1?$ 

RegEx Demo

RegEx Dağılması:

  • ^: Başlangıç ​​
  • ([a-z]): Grup 1.
  • (?!\1) yakalayan ilk harfini Eşleşme: emin olmak için Lookahead yine
  • aynı mektubu eşleşmiyor
  • ([a-z]): Yakalama grubunda ikinci harfi eşleştirin # 3
  • (?:\1\2)*: Sonunda
  • $ önce Karşılaşma opsiyonel ilk harfi: Birinci ve ikinci harfi
  • \1? sıfır veya daha fazla çift maç sonu
+1

Bu 'aaaaaaaaaa' ile de eşleşiyor – ikleschenkov

+0

Haklısınız, şimdi düzeltildi. – anubhava