
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]*'
ultraexpeditious
stimmt überein, weil es enthält aexpeditious
, was mit Ihrem regulären Ausdruck übereinstimmt.