Brauche Hilfe mit grep + regex

Brauche Hilfe mit grep + regex

Ich muss eine Reihe von Wörtern finden, die Vokale in der Reihenfolge „aeiou“ enthalten. Sie müssen nicht nacheinander auftreten. Außerdem darf jeder Vokal mehrmals vorkommen, bevor der nächste auftritt, aber nie wieder, nachdem der nächste Vokal aufgetreten ist.

Grundeingabeliste -https://jsfiddle.net/3mj72nwh/

bisher habe ich diese Regex verwendet

grep 'a[^eiou]*e[^aiou]*i[^aeou]*o[^aeiu]*u[^aeio]*' words2.txt - this is the closest one that I got

grep 'a[^e^i^o^u]*e[^a^i^o^u]*i[^a^e^o^u]*o[^a^e^i^u]*u[^a^e^i^o]*' words2.txt

grep 'a.*e[^a]*i[^ae]*o[^aei]*u[^aeio]*' words2.txt 

Und einige Ergebnisse vom ersten -

appenditious,appetitious,arenicolous,arreptitious,arsenious

....

ultraexpeditious,ultrareligious,unfacetious

Die meisten meiner Ausgaben erfüllen die Bedingungen, einige jedoch nicht. Beispiel:ultraschnellweil wennSietritt danach auf, das Wort darf keinen Vokal mehr enthalten.

Antwort1

Sie müssen Ihre Suche verankern (oder verwenden -x):

grep -x '[^aeiou]*a[^eiou]*e[^aiou]*i[^aeou]*o[^aeiu]*u[^aeio]*'

ultraexpeditiousstimmt überein, weil es enthält aexpeditious, was mit Ihrem regulären Ausdruck übereinstimmt.

verwandte Informationen