Regulärer Ausdruck (regulärer Ausdruck) beschreibt ein Zeichenfolgenvergleichsmuster, mit dem überprüft werden kann, ob eine Zeichenfolge eine bestimmte Teilzeichenfolge enthält, die passende Teilzeichenfolge ersetzt oder eine Teilzeichenfolge, die eine bestimmte Bedingung erfüllt, aus einer bestimmten Zeichenfolge extrahiert werden kann.
Die reguläre Ausdrucksfunktion der Perl-Sprache ist sehr leistungsfähig und im Grunde die leistungsstärkste unter den häufig verwendeten Sprachen. Viele Sprachen beziehen sich beim Entwerfen der Unterstützung für reguläre Ausdrücke auf die regulären Ausdrücke von Perl.
Die drei Formen regulärer Perl-Ausdrücke sind Matching, Replacement und Transformation:
Übereinstimmung: m/
Ersatz: s/
Konvertierung: tr/
Diese drei Formen werden im Allgemeinen mit =~ oder !~ verwendet. =~ bedeutet Übereinstimmung, !~ bedeutet Nichtübereinstimmung.
Der Matching-Operator m// wird verwendet, um eine String-Anweisung oder einen regulären Ausdruck abzugleichen. Um beispielsweise „run“ im Skalar $bar abzugleichen, lautet der Code wie folgt:
Wenn Sie das obige Programm ausführen, lautet das Ausgabeergebnis:
Erstes Spiel. Zweites Spiel
Beim Mustervergleich gibt es einige häufig verwendete Modifikatoren, wie in der folgenden Tabelle dargestellt:
Modifikator | beschreiben |
---|---|
ich | Groß-/Kleinschreibung im Muster ignorieren |
M | Mehrzeilenmodus |
O | Weisen Sie den Wert nur einmal zu |
S | Einzeiliger Modus, „.“ stimmt mit „n“ überein (Standard stimmt nicht überein) |
X | Leerzeichen im Muster ignorieren |
G | globale Übereinstimmung |
cg | Wenn der globale Abgleich fehlschlägt, kann die übereinstimmende Zeichenfolge erneut gesucht werden. |
Nachdem Perl verarbeitet wurde, gibt es drei spezielle Variablennamen für die übereinstimmenden Werte:
$`: Der vorherige Teil der passenden Zeichenfolge
$&: passende Zeichenfolge
$': Es sind noch keine weiteren übereinstimmenden Zeichenfolgen vorhanden
Wenn Sie diese drei Variablen zusammenfügen, erhalten Sie die ursprüngliche Zeichenfolge.
Beispiele sind wie folgt:
Das Ausgabeergebnis der Ausführung des obigen Programms ist:
String vor dem Abgleich: Willkommen bei String vor dem Abgleich: String nach dem Abgleich ausführen: oob-Site.
Der Ersetzungsoperator s/// ist eine Erweiterung des Matching-Operators und ersetzt die angegebene Zeichenfolge durch eine neue Zeichenfolge. Das Grundformat ist wie folgt:
s/MUSTER/ERSATZ/;
PATTERN ist das passende Muster, REPLACEMENT ist die Ersatzzeichenfolge.
Beispielsweise ersetzen wir „google“ in der folgenden Zeichenfolge durch „codercto“:
Das Ausgabeergebnis der Ausführung des obigen Programms ist:
Willkommen auf der Website von Codercto.
Die Ersetzungsoperationsmodifikatoren sind in der folgenden Tabelle aufgeführt:
Modifikator | beschreiben |
---|---|
ich | Wenn dem Modifikator „i“ hinzugefügt wird, hebt der reguläre Ausdruck die Groß-/Kleinschreibung auf, d. h. „a“ und „A“ sind gleich. |
M | Der standardmäßige reguläre Anfang „^“ und das Ende „$“ gelten nur für reguläre Zeichenfolgen. Wenn „m“ zum Modifikator hinzugefügt wird, beziehen sich Anfang und Ende auf jede Zeile der Zeichenfolge: Der Anfang jeder Zeile ist „^“. ", Es endet mit "$". |
O | Der Ausdruck wird nur einmal ausgeführt. |
S | Wenn dem Modifikator „s“ hinzugefügt wird, wird das standardmäßige „.“, das ein beliebiges Zeichen außer Zeilenumbrüchen darstellt, zu einem beliebigen Zeichen, einschließlich Zeilenumbrüchen! |
X | Wenn dieser Modifikator hinzugefügt wird, werden Leerzeichen im Ausdruck ignoriert, es sei denn, sie wurden mit Escapezeichen versehen. |
G | Ersetzen Sie alle passenden Zeichenfolgen. |
e | Ersetzen Sie die Zeichenfolge als Ausdruck |
Im Folgenden sind die Modifikatoren aufgeführt, die sich auf den Konvertierungsoperator beziehen:
Modifikator | beschreiben |
---|---|
C | Konvertieren Sie alle nicht angegebenen Zeichen |
D | Alle angegebenen Zeichen löschen |
S | Fassen Sie mehrere identische Ausgabezeichen zu einem zusammen |
Das folgende Beispiel wandelt alle Kleinbuchstaben in der Variablen $string in Großbuchstaben um:
#!/usr/bin/perl $string = 'Willkommen auf der Codercto-Site.';$string =~ tr/az/Az/;print "$stringn";
Das Ausgabeergebnis der Ausführung des obigen Programms ist:
WILLKOMMEN AUF DER CODERCTO-SEITE.
Das folgende Beispiel verwendet /s, um wiederholte Zeichen aus der Variablen $string zu entfernen:
Das Ausgabeergebnis der Ausführung des obigen Programms ist:
runob
Weitere Beispiele:
$string =~ tr/d/ /c; # Ersetze alle nicht numerischen Zeichen durch Leerzeichen $string =~ tr/t //d # Lösche Tabulatoren und Leerzeichen $string =~ tr/0-9/ /cs # Ersetzen Sie andere Zeichen zwischen Zahlen durch ein Leerzeichen.
Ausdruck | beschreiben |
---|---|
. | Entspricht allen Zeichen außer Zeilenumbrüchen |
X? | Übereinstimmung mit x Zeichenfolge 0 oder einmal |
X* | Passen Sie die x-Zeichenfolge mindestens 0 Mal an, aber so oft wie möglich |
x+ | Übereinstimmung mit der x-Zeichenfolge mindestens einmal, aber so oft wie möglich |
.* | Entspricht einem beliebigen Zeichen mindestens 0 Mal |
.+ | Entspricht einem beliebigen Zeichen einmal oder mehrmals |
{M} | Entspricht genau m angegebenen Zeichenfolgen |
{m,n} | Entspricht mehr als m und weniger als n angegebenen Zeichenfolgen |
{M,} | Entspricht m oder mehr angegebenen Zeichenfolgen |
[] | Entspricht Zeichen innerhalb von [] |
[^] | Entspricht Zeichen, die nicht mit [] übereinstimmen |
[0-9] | Entspricht allen numerischen Zeichen |
[az] | Entspricht allen Kleinbuchstaben des Alphabets |
[^0-9] | Entspricht allen nicht numerischen Zeichen |
[^az] | Entspricht allen alphabetischen Zeichen, die keine Kleinbuchstaben sind |
^ | Entspricht den Zeichen, die mit beginnen |
$ | Entspricht dem Zeichen am Ende des Zeichens |
D | Entspricht einem numerischen Zeichen, der gleichen Syntax wie [0-9] |
d+ | Entspricht mehreren numerischen Zeichenfolgen, dieselbe Syntax wie [0-9]+ |
D | Keine Nummer, das Gleiche wie andered |
D+ | Keine Zahl, dasselbe wie d+ für andere |
w | Eine Zeichenfolge aus englischen Buchstaben oder Zahlen, dieselbe Syntax wie [a-zA-Z0-9_] |
w+ | Gleiche Syntax wie [a-zA-Z0-9_]+ |
W | Eine Zeichenfolge nicht-englischer Buchstaben oder Zahlen, dieselbe Syntax wie [^a-zA-Z0-9_] |
W+ | Gleiche Syntax wie [^a-zA-Z0-9_]+ |
S | Leerzeichen, gleiche Syntax wie [ntrf] |
s+ | Das Gleiche wie [ntrf]+ |
S | Kein Leerzeichen, gleiche Syntax wie [^ntrf] |
S+ | Gleiche Syntax wie [^ntrf]+ |
B | Entspricht Zeichenfolgen, die durch englische Buchstaben und Zahlen begrenzt sind |
B | Entspricht Zeichenfolgen, die nicht durch englische Buchstaben oder numerische Werte begrenzt sind |
a|b|c | Sucht nach Zeichenfolgen, die mit einem Zeichen, B-Zeichen oder C-Zeichen übereinstimmen |
ABC | Passen Sie die Zeichenfolge (das Muster) an, die abc () enthält. Dieses Symbol merkt sich die gefundene Zeichenfolge, was eine sehr praktische Syntax ist. Die in der ersten () gefundene Zeichenfolge wird zur Variablen $1 oder 1, die in der zweiten () gefundene Zeichenfolge. wird zur $2-Variablen oder zur 2-Variablen usw. |
/Muster/i | i Dieser Parameter gibt an, dass die englische Groß-/Kleinschreibung ignoriert wird, d. h. beim Abgleichen von Zeichenfolgen wird das Problem der englischen Groß-/Kleinschreibung nicht berücksichtigt. Wenn Sie im Mustermodus ein Sonderzeichen wie „*“ suchen möchten, müssen Sie es hinzufügen vor diesem Zeichen Verwenden Sie das Symbol , um Sonderzeichen ungültig zu machen. |