2017-03-31 2 views
1

ich eine Frage zu einem regulären Ausdruck (ich im Voraus entschuldigen, wenn es Fehler in der Terminologie, mein Kurs ist auf Englisch nicht):Suche nach einer eleganteren Lösung regex

Ich mag einen regulären Ausdruck schreiben für alle Zeichenfolgen, die eine gerade Zahl der Teilzeichenfolge 'ab' enthalten, vorausgesetzt, dass die Zeichen aus der Gruppe {a,b,c} stammen.

zum Beispiel: ababcbcabbcababcabcabcabbaccbccabccabc usw.

Bisher ist dies die kürzeste Ausdruck kam ich mit: (b+a*c+aa*bb*(a+cb*)*ab)*a*

Dies scheint jedoch ein wenig gewunden, vielleicht könnte jemand vorschlagen, eine kürzere oder eleganter Ausdruck? Vielen Dank.

+0

Ist es eine reine regex sein müssen oder können Sie die Anzahl der Spiele von „ab“ erhalten und prüfen, ob diese Zahl ist gerade? –

+0

@AndrewMorton rein eine Regex – LifeOfPai

Antwort

0

Dies ist nicht notwendig, eleganter, aber es verlässt sich nicht auf c & sollte mit beliebigen Buchstaben arbeiten. Allerdings habe ich diese Entscheidung bei Ihnen hinterlassen werden, hier ist meine Lösung:

^((?!ab).)*(ab((?!ab).)*ab((?!ab).)*)*$ 

Here's an example on regexr!

Verwandte Themen