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.
Charakter | Was tut es? | Beispiel | Streichhölzer |
---|---|---|---|
^ | Stimmt mit dem Zeilenanfang überein | ^ abc | abc, abcdef .., abc123 |
$ | Stimmt mit dem Zeilenende überein | abc $ | meine: abc, 123abc, theabc |
. | Finde einen beliebigen Charakter | ac | abc, asg, a2c |
| | ODER-Operator | abc | xyz | abc 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 des | ABC | abc, abbcc, abcdc |
+ | Gleiches Zeichen vor + ein oder mehrmals | a + c | ac, aac, aaac, |
? | Entspricht dem Zeichen vor dem? Null oder einmal. Wird auch als nicht gieriges Spiel verwendet | ABC | ac, abc |
\ | Entkomme dem Zeichen nach dem Backslash oder erstelle eine Escape-Sequenz. | a \ sc | ac |
Escape-Zeichen (Escape-Sequenz)
Hinweis: Escape-Zeichen unterscheiden zwischen Groß- und Kleinschreibung.
Charakter | Was 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 () [] {} ^ $. | * +? \ |
\ 0 | Nullzeichen |
\ein | Stimmen Sie eine Glocke oder einen Alarm ab. |
\ b | Wortbegrenzung im Großteil oder Rückschritt |
\ B | Keine Wortgrenze |
\ d | Entspricht einer beliebigen Dezimalstelle (0-9) |
\ D | Übereinstimmung mit einer beliebigen Nicht-Ziffer |
\ e | Finde eine Flucht |
\ f | Passen Sie einen Formular-Feed an |
\ n | Passen Sie eine neue Zeile an |
\ Q ... \ E | Ignoriert jegliche spezielle Bedeutung in der Übereinstimmung. |
\ r | Passen Sie einen Wagenrücklauf an |
\ s | Entspricht einem Leerzeichen (Leerzeichen, \ t, \ r, \ n) |
\ S | Stimmt mit jedem nicht-weißen Leerzeichen überein |
\ t | Finden Sie eine Registerkarte |
\ v | Passen Sie eine vertikale Registerkarte an |
\ w | Stimmt mit einem beliebigen Wortzeichen überein [a-zA-Z_0-9] |
\ W | Stimmt 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.
Charakter | Was tut es? |
---|---|
ich | Den Fall ignorieren (Groß- und Kleinschreibung erlaubt) |
m | Mehrzeiliges Spiel |
s | Passen Sie neue Zeilen an |
x | Leerzeichen und Kommentare zulassen |
J | Doppelte Gruppennamen sind zulässig |
U | Ungleiches 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