2016-10-07 6 views
-2

Hier ist meine Frage, die mir gegeben wurde: Schreiben Sie einen regulären Ausdruck, um Zeichenfolgen mit einer beliebigen Anzahl von a, b und c in der Reihenfolge abc zu erkennen. Jedoch kann eine beliebige Anzahl von d's unter den a's, b's und c's sein.Was wäre die Regex

Positive Beispiele:

dddaddbcdd
dddd

Negative Beispiele:

dabcddadbdd

weil der 2. Sequenz b beginnt ut endet nicht.

ddcdd weil c ohne führende ab
ddaddbddcaddbcdd weil 2 abc Sequenzen

Hier ist, was ich versucht habe:

[^abc]+(a|b|c)*[^abc] 
+0

Warum ist 'ddaddbddcaddbcdd' negativ? Sie sagten "eine beliebige Anzahl von a, b und c". Ist es nur ein Satz von ABC, oder kann es mehrere sein? –

+0

Gute Frage ... von dem, was ich verstehe, sollte es Single Set sein. – user3634329

+1

Ich stimme für das Schließen dieser Frage als Off-Topic, da es ein grundlegendes Verständnis von regulären Ausdrücken fehlt. – Qix

Antwort

0

Wenn ich Ihre Frage richtig verstanden, ist die Idee, dass a muss vor b und b vor c sein, wenn einer von ihnen vorhanden ist. Zusätzlich könnte es irgendwo d geben.

Wenn das der Fall ist, dann können Sie einen regulären Ausdruck wie folgt verwenden:

^d*(?:a+d*b+d*c+d*)?$ 

Working demo

Verwandte Themen