Was ist ein Regex (regulärer Ausdruck)?

Abkürzung für reguläre Ausdrücke . Ein regulärer Ausdruck ist eine Zeichenfolge aus Text, mit der Sie Muster erstellen können, mit denen Text gefunden, lokalisiert und verwaltet werden kann. Perl ist ein hervorragendes Beispiel für eine Programmiersprache, die reguläre Ausdrücke verwendet. Es ist jedoch nur einer der vielen Orte, an denen Sie reguläre Ausdrücke finden können. Reguläre Ausdrücke können auch über die Befehlszeile und in Texteditoren verwendet werden, um Text in einer Datei zu suchen.

Beim ersten Versuch, reguläre Ausdrücke zu verstehen, scheint es sich um eine andere Sprache zu handeln. Durch das Beherrschen regulärer Ausdrücke können Sie Tausende von Stunden einsparen, wenn Sie mit Text arbeiten oder große Datenmengen parsen müssen. Im Folgenden finden Sie ein Beispiel für einen regulären Ausdruck, bei dem alle Komponenten gekennzeichnet sind. Dieser reguläre Ausdruck wird auch in den Perl-Programmierbeispielen gezeigt, die später auf dieser Seite gezeigt werden.

Die Grundlagen regulärer Ausdrücke (Spickzettel)

Ein Blick auf das obige Beispiel kann überwältigend sein. Wenn Sie jedoch die grundlegende Syntax der Befehle für reguläre Ausdrücke verstanden haben, können Sie das obige Beispiel so lesen, als würden Sie diesen Satz lesen. Leider verwenden nicht alle Programme, Befehle und Programmiersprachen die gleichen regulären Ausdrücke, sie haben jedoch Ähnlichkeiten.

CharakterWas tut es?BeispielStreichhölzer
^Stimmt mit dem Zeilenanfang überein^ abcabc, abcdef .., abc123
$Stimmt mit dem Zeilenende übereinabc $meine: abc, 123abc, theabc
.Finde einen beliebigen Charakteracabc, asg, a2c
|ODER-Operatorabc | xyzabc oder xyz
(...)Erfassen Sie alles, was übereinstimmt(ABC)Erfasst 'a' und 'c'
(?: ...)Gruppe ohne Erfassung(ABC)Erfasst 'a', aber nur Gruppen 'c'
[...]Stimmt mit allem überein, was in Klammern enthalten ist[ABC]a, b oder c
[^ ...]Stimmt mit allem überein, was nicht in Klammern enthalten ist[^ abc]Xyz, 123, 1de
[az]Stimmt mit beliebigen Zeichen zwischen 'a' und 'z' überein[bz]bc, denk nach, xyz
{x}Die exakte Anzahl von 'x' -Zeiten(abc) {2}abcabc
{x, }Gleiche Anzahl von 'x' oder mehr(abc) {2, }abcabc, abcabcabc
{x, y}Übereinstimmung zwischen 'x' und 'y' Zeiten.(a) {2, 4}aa, aaa, aaaaa
*Gieriges Spiel, das alles an Stelle desABCabc, abbcc, abcdc
+Gleiches Zeichen vor + ein oder mehrmalsa + cac, aac, aaac,
?Entspricht dem Zeichen vor dem? Null oder einmal. Wird auch als nicht gieriges Spiel verwendetABCac, abc
\Entkomme dem Zeichen nach dem Backslash oder erstelle eine Escape-Sequenz.a \ scac

Escape-Zeichen (Escape-Sequenz)

Hinweis: Escape-Zeichen unterscheiden zwischen Groß- und Kleinschreibung.

CharakterWas tut es?
\Jedes Zeichen, das nicht weiter unten mit einem \ gekennzeichnet ist, wird mit einem Escapezeichen versehen. Zum Beispiel, \. entspricht einem Punkt und führt die oben genannte Funktion nicht aus. Zeichen, die maskiert werden sollen, sind () [] {} ^ $. | * +? \
\ 0Nullzeichen
\einStimmen Sie eine Glocke oder einen Alarm ab.
\ bWortbegrenzung im Großteil oder Rückschritt
\ BKeine Wortgrenze
\ dEntspricht einer beliebigen Dezimalstelle (0-9)
\ DÜbereinstimmung mit einer beliebigen Nicht-Ziffer
\ eFinde eine Flucht
\ fPassen Sie einen Formular-Feed an
\ nPassen Sie eine neue Zeile an
\ Q ... \ EIgnoriert jegliche spezielle Bedeutung in der Übereinstimmung.
\ rPassen Sie einen Wagenrücklauf an
\ sEntspricht einem Leerzeichen (Leerzeichen, \ t, \ r, \ n)
\ SStimmt mit jedem nicht-weißen Leerzeichen überein
\ tFinden Sie eine Registerkarte
\ vPassen Sie eine vertikale Registerkarte an
\ wStimmt mit einem beliebigen Wortzeichen überein [a-zA-Z_0-9]
\ WStimmt mit einem beliebigen Nicht-Wort-Zeichen überein

Reguläre Ausdrücke

Außerhalb des regulären Ausdrucks (am Ende) können Flags verwendet werden, um den Mustervergleich zu erleichtern.

CharakterWas tut es?
ichDen Fall ignorieren (Groß- und Kleinschreibung erlaubt)
mMehrzeiliges Spiel
sPassen Sie neue Zeilen an
xLeerzeichen und Kommentare zulassen
JDoppelte Gruppennamen sind zulässig
UUngleiches Spiel

Beispiele für reguläre Ausdrücke der Perl-Programmiersprache

Nachfolgend finden Sie einige Beispiele für reguläre Ausdrücke und Musterübereinstimmung in Perl. Viele dieser Beispiele sind anderen Programmiersprachen und Programmen, die reguläre Ausdrücke unterstützen, ähnlich oder gleich.

 $ data = ~ s / schlechte Daten / gute Daten / i; 

Das obige Beispiel ersetzt alle "fehlerhaften Daten" durch "gute Daten", wobei eine Übereinstimmung verwendet wird, bei der die Groß- und Kleinschreibung nicht berücksichtigt wird. Wenn also die $ data-Variable "Hier ist schlechte Daten" wäre, würde dies zu "Hier ist gute Daten".

 $ data = ~ s / a / A /; 

In diesem Beispiel werden alle Kleinbuchstaben a durch Großbuchstaben A ersetzt . Wenn also $ data "Beispiel" wäre, würde es zu "ExAmple" werden.

 $ data = ~ s / [az] / * /; 

Das obige Beispiel ersetzt alle Kleinbuchstaben (a bis z) durch ein Sternchen. Wenn also $ data "Example" wäre, würde es zu "E ******" werden.

 $ data = ~ s / e $ / es /; 

In diesem Beispiel wird das Zeichen $ verwendet, mit dem der reguläre Ausdruck mit dem Text am Ende der Zeichenfolge übereinstimmt. Wenn also $ data "Beispiel" wäre, würde dies zu "Beispielen" werden.

 $ data = ~ s /\./!/; 

Im obigen Beispiel ersetzen wir eine Periode durch ein Ausrufezeichen. Da es sich bei dem Punkt um ein Metazeichen handelt, wenn Sie nur einen Punkt ohne das \ (Escape-Zeichen) eingegeben haben, wird er als beliebiges Zeichen behandelt. Wenn in diesem Beispiel $ data "Beispiel" wäre. es würde "Beispiel" werden, aber wenn Sie nicht die Flucht hätten, würde es jeden Charakter ersetzen und "!!!!!!!!"

 $ data = ~ s / ^ e / E /; 

In diesem Beispiel sagt das Caret (^) schließlich, dass der reguläre Ausdruck mit irgendetwas am Anfang der Zeile übereinstimmt. In diesem Beispiel würde dies mit einem beliebigen Kleinbuchstaben e am Anfang der Zeile übereinstimmen und es mit einem Großbuchstaben E ersetzen. Wenn $ data "example" wäre, würde dies zu "Example" werden.

Tipp: Wenn Sie reguläre Ausdrücke in Befehlen wie grep oder reguläre Ausdrücke in Programmiersprachen noch genauer untersuchen möchten, lesen Sie das O'Reilly-Buch "Reguläre Ausdrücke beherrschen".

Computerakronyme, Fluchtsequenz, Ausdruck, Glob, Meta-Zeichen, Programmierbegriffe, Tilde, Wildcard