Heim >Backend-Entwicklung >PHP-Tutorial >Reguläre Ausdrücke (39)

Reguläre Ausdrücke (39)

WBOY
WBOYOriginal
2016-08-08 09:23:23851Durchsuche

Einführung in reguläre Ausdrücke:

??Regulärer Ausdruck ist eine grammatikalische Regel, die zur Beschreibung der Zeichenanordnung und der Übereinstimmungsmuster verwendet wird. Es wird hauptsächlich für Mustersegmentierungs-, Matching-, Such- und Ersetzungsoperationen von Zeichenfolgen verwendet. Der bisher verwendete exakte (Text-)Abgleich ist ebenfalls ein regulärer Ausdruck.
??In PHP ist ein regulärer Ausdruck im Allgemeinen eine programmatische Beschreibung eines Textmusters, das aus regulären Zeichen und einigen Sonderzeichen (ähnlich Platzhaltern) besteht.

?? In PHP haben reguläre Ausdrücke drei Funktionen:

?? und werden häufig zum Extrahieren von Zeichenfolgen verwendet Information.
??Übereinstimmenden Text durch neuen Text ersetzen.
?? Teilen Sie eine Zeichenfolge in eine Reihe kleinerer Informationsblöcke auf.
??Ein regulärer Ausdruck enthält mindestens ein Atom

Es gibt zwei Sätze von Funktionsbibliotheken für reguläre Ausdrücke in PHP. Die Funktionen der beiden sind ähnlich , aber die Ausführungseffizienz ist etwas anders:

?? Ein Satz wird von der PCRE-Bibliothek (Perl Compatible Regular Expression) bereitgestellt. Funktionen mit dem Präfix „preg_“;
?? Ein Satz, der von POSIX-Erweiterungen (Portable Operating System Interface of Unix) bereitgestellt wird. Verwenden Sie Funktionen mit dem Präfix „ereg_“. Einer der Gründe für die Verwendung regulärer Ausdrücke ist, dass bei typischen Such- und Ersetzungsvorgängen nur exakte Literale abgeglichen werden können. Objekte suchen nach dynamischem Text schwierig oder sogar unmöglich.
Grammatikregeln für reguläre Ausdrücke

PCRE-regulärer Ausdruck:

??Der vollständige Name von PCRE lautet Perl-kompatibler regulärer Ausdruck bedeutet, dass Perl mit regulären Ausdrücken kompatibel ist.
??PCRE ist von der Perl-Sprache abgeleitet und Perl ist eine der leistungsstärksten Sprachen für String-Operationen. Die ursprüngliche Version von PHP war ein von Perl entwickeltes Produkt.
??Die PCRE-Syntax unterstützt mehr Funktionen, ist leistungsfähiger als die POSIX-Syntax, implementiert dieselben Funktionsfunktionen und bietet einen leichten Vorteil bei der Effizienz der Verwendung der PCRE-Bibliothek. Aber sie haben auch viel gemeinsam.
??In PCRE wird der Musterausdruck (d. h. regulärer Ausdruck) normalerweise zwischen zwei Backslashes „/“ eingeschlossen, wie zum Beispiel „/apple/“. Benutzer müssen lediglich den Musterinhalt, der abgeglichen werden muss, zwischen die Trennzeichen einfügen. Die Begrenzungszeichen sind nicht auf „/“ beschränkt. Als Trennzeichen können alle Zeichen außer Buchstaben, Zahlen und Schrägstrichen „“ verwendet werden, z. B. „#“, „|“, „!“ usw.
Atom

Atom ist die Grundeinheit, aus der ein regulärer Ausdruck besteht. Bei der Analyse sollte dieser als Ganzes behandelt werden .

??Zu den Atomzeichen gehören alle englischen Buchstaben, Zahlen, Satzzeichen und andere Symbole. Zu den Atomen gehört auch Folgendes.
??Einzelzeichen, Zahlen wie a-z, A-Z, 0-9.
?? Mustereinheiten wie (ABC) können als große Atome verstanden werden, die aus mehreren Atomen bestehen.
??Atomtabelle, z. B. [ABC].
??Wiederverwendete Mustereinheiten, wie zum Beispiel: \1
??Gemeinsame Escape-Zeichen, wie zum Beispiel: d, D, w
?? Escape-Metazeichen wie: *, .
Gemeinsame Escape-Zeichen

Atombeschreibung

------------------------------------------------- ----
d Entspricht einer Zahl, die [0-9] entspricht.
D Entspricht jedes Zeichen außer Zahlen; entspricht [^0-9]
w Entspricht einem englischen Buchstaben, einer Zahl oder einem Unterstrich; entspricht [0-9a-zA-Z_]
W Entspricht jedem Zeichen außer englischen Buchstaben, Zahlen und Unterstrichen; entspricht [^0-9a-zA-Z_]
s Entspricht einem Leerzeichen; entspricht [fnrtv]
S Entspricht jedem Zeichen außer Leerzeichen; Entspricht [^fnrtv]
f Entspricht einem Formular-Feed-Zeichen. Entspricht x0c oder cL
n Entspricht ein Zeilenumbruchzeichen; äquivalent zu x0a oder cJ
r Entspricht einem Wagenrücklaufzeichen, äquivalent zu x0d oder cM
t Entspricht einem Tabulatorzeichen, äquivalent zu x09 oder cl
v Entspricht einem vertikalen Tabulatorzeichen; entspricht x0b oder ck
oNN Entspricht einer Oktalzahl
xNN Entspricht einer Hexadezimalzahl
cC Entspricht einem Steuerzeichen
Metazeichen (Meta-Zeichen)

Metazeichen sind Zeichen mit besonderer Bedeutung, die zum Erstellen regulärer Ausdrücke verwendet werden. Wenn Sie das Metazeichen selbst in den regulären Ausdruck einschließen möchten, müssen Sie „“ davor hinzufügen, um es zu maskieren
Metazeichenbeschreibung
------ -- ------------------------------------------------ -- -------
* Entspricht dem vorhergehenden Atom 0, 1 oder mehr Mal
Entspricht dem vorhergehenden Atom 1 oder mehr Mal Atom
? 0 oder 1 Mal stimmt mit dem vorhergehenden Atom überein
| Entspricht zwei oder mehr Auswahlmöglichkeiten
^ oder A Entspricht dem Atom am Anfang der Zeichenfolge
$ oder Z stimmt mit dem Atom am Ende der Zeichenfolge überein
b Stimmt mit der Grenze des Wortes überein
B Stimmt mit allem außer Wort überein Grenzen
[] Entspricht jedem Atom in eckigen Klammern
[^] Entspricht jedem Zeichen außer einem Atom in eckigen Klammern
{m }  Zeigt an, dass sein vorhergehendes Atom genau m-mal vorkommt
{m,n}  Zeigt an, dass sein vorhergehendes Atom mindestens m-mal und mindestens n-mal (n>m) vorkommt
{m,}  Gibt an, dass das vorhergehende Atom mindestens m-mal vorkommt.
()  Stellt ein Atom als Ganzes dar.
Entspricht jedem Zeichen außer Zeilenumbruch

String-Grenzen-Einschränkungen

In einigen Fällen muss der Matching-Bereich eingeschränkt werden, um genauere Matching-Ergebnisse zu erhalten. „^“ und „$“ geben den Anfang bzw. das Ende der Zeichenfolge an.
??Zum Beispiel in der Zeichenfolge „Tom und Jerry jagten sich gegenseitig im Haus, bis Tom nicht mehr da ist“
??Metazeichen „^“ oder „A " wird am Anfang der Zeichenfolge platziert, um sicherzustellen, dass die Musterübereinstimmung am Anfang der Zeichenfolge erscheint;
/^Tom/
?? Metazeichen "$ „ oder „Z“ wird am Ende der Zeichenfolge platziert, um sicherzustellen, dass der Mustervergleich am Ende der Zeichenfolge erfolgt.
/in$/
?? Wenn Sie keine Grenzbeschränkungsmetazeichen hinzufügen, erhalten Sie mehr übereinstimmende Ergebnisse.
/^Tom$/Genaue Übereinstimmung/Tom/Fuzzy-Übereinstimmung

Grenzwert für Wortgrenzen

wird verwendet Wenn Sie die Suchfunktion verschiedener Bearbeitungsprogramme verwenden, erhalten Sie genauere Ergebnisse, indem Sie „Suche nach Wort“ auswählen. Eine ähnliche Funktionalität ist in regulären Ausdrücken verfügbar.
??Zum Beispiel: in der Zeichenfolge „Diese Insel ist ein wunderschönes Land“
??Das Metazeichen „b“ entspricht der Grenze des Wortes
/bisb/ entspricht dem Wort „is“, aber nicht „This“ und „island“.
/bis/ stimmt mit den Wörtern „is“ und „is“ in „island“ überein, stimmt nicht mit „This“ überein
?? Metazeichen „B“ außer Übereinstimmungen außerhalb der Wortgrenzen.
/BisB/ gibt ausdrücklich an, dass nicht die linke oder rechte Grenze des Wortes, sondern nur das Innere des Wortes übereinstimmen soll. In diesem Beispiel gibt es also kein Ergebnis.
/Bis/ stimmt mit „is“ im Wort „This“ überein

Wiederholte Übereinstimmung

Regulärer Ausdruck Es gibt einige Metazeichen in der Formel, die zur wiederholten Zuordnung bestimmter Atome verwendet werden: „?“, „*“, „ “. Der Hauptunterschied zwischen ihnen besteht in der Anzahl der wiederholten Übereinstimmungen.
?? Metazeichen „?“: Zeigt 0 oder 1 Übereinstimmung des Atoms unmittelbar davor an.
Zum Beispiel: /colou?r/ entspricht „Farbe“ oder „Farbe“.
??Metazeichen „*“: gibt 0, 1 oder mehr Übereinstimmungen des Atoms unmittelbar davor an.
Zum Beispiel: /zo*/ kann mit z, zoo übereinstimmen
?? Metazeichen " ": Zeigt eine oder mehrere Übereinstimmungen des Atoms unmittelbar davor an.
Zum Beispiel: /go gle/ stimmt mit „gogle“, „google“ oder „gooogle“ und anderen Zeichenfolgen überein, die in der Mitte mehrere Nullen enthalten.

Beliebiges Zeichen

Das Metazeichen „.“ entspricht jedem Zeichen außer dem Zeilenumbruchzeichen.
?? Entspricht: [^n] (Unix-System) oder [^rn] (Windows-System).
??Zum Beispiel: /pr.y/ kann mit den Zeichenfolgen „prey“, „pray“ oder „pr%y“ usw. übereinstimmen.
??Normalerweise können Sie die Kombination „.*“ verwenden, um jedes Zeichen außer Zeilenumbrüchen zu finden. In einigen Büchern wird es auch „vollständige Übereinstimmung“ oder „einzelne inklusive Übereinstimmung“ genannt.
??Zum Beispiel:
??/^a.*z$/ bedeutet, dass es mit allem übereinstimmen kann, das mit dem Buchstaben „a“ beginnt und mit dem Buchstaben endet „z“, ausgenommen String mit Zeilenumbruchzeichen.
??/. / kann auch eine ähnliche Matching-Funktion ausführen, außer dass es mit mindestens einem Zeichen übereinstimmt.
??/^a. z$/ entspricht „a%z“, aber nicht der Zeichenfolge „az“

Atomtabelle – eckige Klammer Ausdruck

Die Atomtabelle „[]“ speichert eine Gruppe von Atomen, die einander gleich sind und nur mit einem von ihnen übereinstimmen. Wenn Sie ein „a“ oder „e“ finden möchten, verwenden Sie [ae].
??Zum Beispiel: Pr[ae]y entspricht „Pray“ oder „Prey“.
??Atomtabelle „[^]“, auch als ausgeschlossene Atomtabelle bekannt, stimmt mit jedem Zeichen außer Atomen in der Tabelle überein.
??Zum Beispiel: /p[^u]/ stimmt mit „pa“ in „part“ überein, kann aber nicht mit „pu“ in „computer“ übereinstimmen, da „u“ von der Übereinstimmung ausgeschlossen ist.
??Die Atomtabelle „[-]“ wird verwendet, um eine Gruppe von Atomen zu verbinden, die in der Reihenfolge des ASCII-Codes angeordnet sind, um das Schreiben zu vereinfachen.
??Zum Beispiel: /x[0123456789]/ kann als x[0-9] geschrieben werden, was verwendet wird, um eine Zeichenfolge abzugleichen, die aus dem Buchstaben „x“ und einer Zahl besteht.
??Zum Beispiel:
??/[a-zA-Z]/ Entspricht allen Groß- und Kleinbuchstaben
? ?/ ^[a-z][0-9]$/ Übereinstimmungen wie „z2“, „t6“, „g7“
??/0[xX][0-9a-fA- F]/ Entspricht einer einfachen Hexadezimalzahl, z. B. „0x9“.
??/[^0-9a-zA-Z_]/ entspricht jedem Zeichen außer englischen Buchstaben, Zahlen und Unterstrichen, was W entspricht.
??/0?[ xX][0-9a-fA-F] / Entspricht hexadezimalen Zahlen, die mit „0x9B3C“ oder „X800“ usw. übereinstimmen können.
??/<[A-Za-z][A-Za-z0-9]*>/ kann mit „

“, „“ übereinstimmen „“ und andere HTML-Tags und kontrollieren nicht strikt die Groß-/Kleinschreibung.

Musterauswahl

Das Metazeichen „|“ wird auch Musterauswahl genannt. Entspricht einer von zwei oder mehr Auswahlmöglichkeiten in einem regulären Ausdruck.
??Zum Beispiel:
??In der Zeichenfolge „Es gibt viele Äpfel und Birnen.“ stimmt /apple|pear/ beim ersten Durchlauf mit „apple "; stimmt mit „pear“ überein, wenn es erneut ausgeführt wird. Sie können auch weiterhin Optionen hinzufügen, wie zum Beispiel: /apple|pear|banana|lemon/

Moduseinheit

Das Metazeichen „( )“ werden die regulären Ausdrücke als Atome (oder Mustereinheiten) verwendet. Ähnlich wie Klammern in mathematischen Ausdrücken kann „()“ allein als Einheit verwendet werden.
??Zum Beispiel:
??/(Dog) /matches „Dog“, „DogDog“, „DogDogDog“, weil unmittelbar davor steht „ " Das Atom ist die Zeichenfolge „Hund“, eingeschlossen vom Metazeichen „()“.
??/Du (sehr alt)/passt zu „Du bist sehr alt“, „Du bist sehr alt“
??/Hallo (Welt|Erde)/passt „Hallo Welt“, „Hallo Erde“
?? Ausdrücke in einer Mustereinheit werden zuerst abgeglichen oder ausgewertet.

Wiederverwendete Mustereinheit

Das System speichert automatisch die Übereinstimmungen in der Mustereinheit „()“ der Reihe nach und kann bei Bedarf als Referenzen verwendet werden werden in der Form „1“, „2“ und „3“ erstellt. Diese Methode ist sehr praktisch für die Verwaltung regulärer Ausdrücke, wenn diese dieselben Mustereinheiten enthalten. Beachten Sie, dass Sie bei der Verwendung „\1“, „\2“ schreiben müssen.
Zum Beispiel:
??/^d{2}([W ])d{2 }\1d{4}$/ Entspricht Zeichenfolgen wie „12-31-2006“, „09/27/1996“, „86 01 4321“ usw. Der obige reguläre Ausdruck entspricht jedoch nicht dem Format „12/34-5678“. Dies liegt daran, dass das Ergebnis „/“ des Musters „[W]“ bereits gespeichert wurde. Wenn auf die nächste Position „1“ verwiesen wird, ist das entsprechende Muster ebenfalls das Zeichen „/“.
??Verwenden Sie die nicht speicherbare Mustereinheit „(?:)“, wenn die Übereinstimmungsergebnisse nicht gespeichert werden müssen.
??Zum Beispiel /(? :a|b|c )(D|E|F)\1g/ wird mit „aEEg“ übereinstimmen. In einigen regulären Ausdrücken ist die Verwendung von Nicht-Speichermodus-Einheiten erforderlich. Andernfalls muss die Reihenfolge der nachfolgenden Verweise geändert werden. Das obige Beispiel kann auch als /(a|b|c)(C|E|F)\2g/ geschrieben werden.


Das Obige hat reguläre Ausdrücke (39) eingeführt, einschließlich einiger Aspekte davon. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn