2017-08-04 65 views
5

Chcę dopasować wzory naprzemiennych małych liter.regex - wzór dopasowania naprzemiennych znaków

ababababa -> match 

Próbowałem to

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

ale będzie to mecz zbyt

ababxyaba 
+0

„na przemian” lub po prostu „numer” z nierówną znaków? Jeśli to drugie, załóż wzór za pomocą kotwic "^" i "$". –

+0

co masz na myśli, mówiąc naprzemiennie małe litery? – marvel308

+0

ciąg zawierający przemianę dwóch takich samych znaków -> xxyxyxy, ale nie xxyxyabxyxy – cmplx96

Odpowiedz

10

Można użyć tego wyrażenia regularnego z 2 back-nawiązaniu dopasować przemian małe litery:

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

RegEx Demo

RegEx Rozpad:

  • ^: Start
  • ([a-z]): Dopasuj pierwszą literę w zdobywaniu grupa nr 1
  • (?!\1): uprzedzona, aby upewnić się, że nie pasują do siebie samą literę ponownie
  • ([a-z]): Dopasuj drugą literę w grupie przechwytującej # 3
  • (?:\1\2)*: zero lub więcej par pierwszej i drugiej litery
  • \1?: mecz opcjonalnego pierwszą literę przed końcem
  • $: Koniec
+1

Pasuje do 'aaaaaaaa' też – ikleschenkov

+0

Masz rację, jest to teraz naprawione. – anubhava