Kann jemand diesen Ausdruck bitte Stück für Stück erklären? grep '\([aeiou]\).\1'

Kann jemand diesen Ausdruck bitte Stück für Stück erklären? grep '\([aeiou]\).\1'

Ich habe diesen Ausdruck für eine Hausaufgabe gefunden, der „alle Zeilen druckt, die einen Vokal (a, e, i, o oder u) enthalten, gefolgt von einem einzelnen Buchstaben, gefolgt von demselben Vokal. So findet er „eve“ oder „adam“, aber nicht „vera“. Der Ausdruck funktioniert richtig, aber ich suche jemanden, der mir erklären kann, was jeder Teil bewirkt, damit ich besser verstehen kann, wie er funktioniert.

Antwort1

Suchen Sie zunächst bei Google nach Regex-Sites. Diese werden Ihnen sehr helfen. Versuchen Sie es beispielsweise mit regexone.

Zweitens: Wenn Sie Regexe testen oder verstehen möchten, lesen Sie regex101.com. Das kann Ihnen sehr helfen, da dort Schritt für Schritt erklärt wird, was passiert. Sie können Regexe auch testen.

Nun zum Ausdruck:

[aeiou]

passt zu allen Zeichen in Klammern (hier: a, e, i, o oder u).

.

entspricht jedem einzelnen Zeichen

\1

stimmt mit der ersten Erfassungsgruppe überein.

\(anything\)

ist eine Erfassungsgruppe.

Die Erfassungsgruppe ist der Name einer Zeichenfolge, die Sie sich für die spätere Verwendung merken können. In diesem Fall können wir uns durch das Erfassen eines beliebigen Zeichens aus [aeiou] merken, was wir gefunden haben. Wenn wir stattdessen diesen regulären Ausdruck schreiben würden:

[aeiou].[aeiou]

wir hätten keine Möglichkeit zu überprüfen, ob der erste und der zweite Vokal gleich sind.

Ihr regulärer Ausdruck bedeutet also: „Suche nach allem, was eines der Zeichen aus „aeiou“ ist, dann nach jedem einzelnen Zeichen und dann nach dem ersten Zeichen.“

Antwort2

Zuerst das \(und \). Das bedeutet „alles innerhalb dieser maskierten Klammern ist eine Gruppe und kann später im Ausdruck als solche referenziert werden“. Darin haben Sie [aeiou], was „irgendein der Zeichen a, e, i, o, oder u“ bedeutet. Der einzelne Punkt , ., bedeutet „irgendein einzelnes Zeichen“. Das \1bedeutet „Das, was Sie gefunden haben, als Sie die erste Gruppe gefunden haben“.

verwandte Informationen