Heim > Backend-Entwicklung > PHP-Tutorial > PHP – PCRE-Escape-Sequenz für reguläre Ausdrücke (Backslash)

PHP – PCRE-Escape-Sequenz für reguläre Ausdrücke (Backslash)

伊谢尔伦
Freigeben: 2016-11-21 17:26:38
Original
1390 Leute haben es durchsucht

Backslash kann auf viele Arten verwendet werden. Erstens: Wenn darauf ein nicht alphanumerisches Zeichen folgt, wird die durch dieses Zeichen dargestellte besondere Bedeutung aufgehoben. Diese Verwendung des Backslashs als Escape-Zeichen ist sowohl innerhalb als auch außerhalb von Zeichenklassen verfügbar.

Wenn Sie beispielsweise ein „*“-Zeichen finden möchten, müssen Sie „*“ in das Muster schreiben. Dies gilt, wenn ein Zeichen ohne Escapezeichen eine besondere Bedeutung haben würde. Bei nicht alphanumerischen Zeichen ist es jedoch immer sicher, einen Backslash davor einzufügen, um zu deklarieren, dass es sich selbst darstellt, wenn es für den Originaltextabgleich benötigt wird. Wenn Sie einen Backslash abgleichen möchten, verwenden Sie „\“ im Muster.

Hinweis:

Backslash hat eine besondere Bedeutung in Zeichenfolgen mit einfachen und doppelten Anführungszeichen. Um einen Backslash zu finden, muss das Muster daher als „\\“ geschrieben werden. Übersetzungsanmerkung: „/\/“, zunächst wird es als Zeichenfolge verwendet und der Backslash wird maskiert, dann ist das maskierte Ergebnis //, dies ist das von der regulären Ausdrucks-Engine erhaltene Muster und der reguläre Ausdruck Die Engine wird auch als Escape-Tag betrachtet. Sie maskiert das Trennzeichen / und erhält einen Fehler. Daher sind 4 Backslashes erforderlich, um einem Backslash zu entsprechen.

Wenn ein Muster mit der Option PCRE_EXTENDED kompiliert wird, werden Leerzeichen im Muster (außer in Zeichenklassen) und alle Zeichen vom nicht maskierten # bis zum Ende der Zeile ignoriert. Um in diesem Fall Leerzeichen oder # zu verwenden, müssen diese mit Escapezeichen versehen werden.

Die zweite Verwendung des Backslashs bietet eine Möglichkeit, die sichtbare Kodierung nicht druckbarer Zeichen zu steuern. Es gibt keine strikte Einschränkung für das Vorkommen nicht druckbarer Zeichen (selbst), außer dass die binäre 0 ein Muster beendet. Wenn ein Muster jedoch mit einem Texteditor erstellt wird, ist die Verwendung der folgenden Escape-Sequenz besser als die Verwendung binärer Zeichen einfacher sein.

a

Ringzeichen (hex 07)

cx

"control-x", x ist ein beliebiges Zeichen

e

Escape (hex 1B)

f

Seitenvorschub (hex 0C)

n

Zeilenumbruch (hex 0A)

p{xx}

Ein Zeichen, das mit dem xx-Attribut übereinstimmt

P{xx}

A Zeichen, das nicht mit dem xx-Attribut übereinstimmt

r

Carriage Enter (hex 0D)

t

Horizontales Tabulatorzeichen (hex 09)

xhh

hh hexadezimal -kodiertes Zeichen

ddd

ddd oktalkodiertes Zeichen oder Rückverweis

Die genaue Wirkung von cx ist wie folgt: Wenn x ein Kleinbuchstabe ist, wird er in umgewandelt Großbuchstaben. Als nächstes invertieren Sie das 6. Bit des Zeichens (hexadezimal 40, das erste Bit von rechts ist Bit 0). Beispielsweise wird cz zu 1A im Hexadezimalformat, c{ wird zu 3B im Hexadezimalformat und c wird zu 7B im Hexadezimalformat.

Lesen Sie nach „x“ zwei hexadezimale Zahlen (Buchstaben können Groß- oder Kleinbuchstaben sein). Im UTF-8-Modus ist „x{...}“ zulässig und der Inhalt in den geschweiften Klammern besteht aus hexadezimalen signifikanten Ziffern. Es interpretiert die angegebene Hexadezimalzahl als UTF-8-Zeichencode. Die ursprüngliche hexadezimale Escape-Sequenz xhh entspricht einem Doppelbyte-UTF-8-Zeichen, wenn sein Wert größer als 127 ist

in"

Jedes nicht-horizontale Leerzeichen (seit PHP 5.2.4)

s

Jedes Nicht-Leerzeichen

S

Alle Nicht- Leerzeichen

v

Jedes vertikale Leerzeichen (seit PHP 5.2.4)

V

Jedes nicht vertikale Leerzeichen (seit PHP 5.2. 4)

w

Beliebiges Wortzeichen

W

Beliebiges Nicht-Wortzeichen

Jedes Paar der Escape-Sequenzen oben steht für zwei Zeichen im gesamten Zeichensatz sind disjunkte Teile, jedes Zeichen wird definitiv mit einem von ihnen übereinstimmen und wird niemals mit dem anderen übereinstimmen.

Wortzeichen beziehen sich auf beliebige Buchstaben, Zahlen und Unterstriche. Das heißt, jedes Zeichen, das ein Perlwort bilden kann. Die Definition von Buchstaben und Zahlen wird über die PCRE-Zeichentabelle gesteuert, die durch Angabe von Gebietsschemaeinstellungen entsprechend geändert werden kann. Beispielsweise werden in der Ländereinstellung „Frankreich (fr)“ einige Zeichencodes über 128 für Buchstaben mit Akzent verwendet, die mit w abgeglichen werden können.

Diese Zeichenklassensequenzen können innerhalb oder außerhalb von Zeichenklassen erscheinen. Sie stimmen jeweils mit einem Zeichen innerhalb des Zeichentyps überein, den sie darstellen. Wenn sich der aktuelle Übereinstimmungspunkt am Ende der Zielzeichenfolge befindet, können alle darin enthaltenen Zeichen nicht übereinstimmen, da keine übereinstimmenden Zeichen mehr vorhanden sind.

Die vierte Verwendung von Backslash sind einige einfache Behauptungen. Eine Behauptung gibt eine Bedingung an, die an einer bestimmten Position erfüllt sein muss; sie verbraucht keine Zeichen aus der Zielzeichenfolge. Als nächstes besprechen wir komplexere Behauptungen mithilfe von Untergruppen. Backslash-Behauptungen umfassen:

b

Wortgrenze

B

Nicht-Wortgrenze

A

Die Startposition des Ziels (unabhängig vom Mehrzeilenmodus)

Z

Die Endposition des Ziels oder das Zeilenumbruchzeichen am Ende (unabhängig vom Mehrzeilenmodus)

z

Die Endposition des Ziels (unabhängig vom Mehrzeilenmodus)

G

Die Position des ersten Treffers im Ziel

Diese Behauptungen können nicht erscheinen in Zeichenklassen (aber Beachten Sie, dass „b“ in Zeichenklassen eine andere Bedeutung hat. Es stellt das Rückschrittzeichen dar.

Eine Wortgrenze stellt dar, wenn sich das aktuelle Zeichen vom vorherigen Zeichen in der Zielzeichenfolge unterscheidet. Übereinstimmungen w oder W (einer entspricht w, der andere entspricht W), oder das aktuelle Zeichen entspricht w als Anfangs- oder Endzeichen der Zeichenfolge.

A-, Z-, z-Behauptungen unterscheiden sich von herkömmlichen ^- und $-Behauptungen (siehe unten) darin, dass sie immer mit dem Anfang und Ende der Zielzeichenfolge übereinstimmen und nicht durch Mustermodifikatoren eingeschränkt sind. Sie sind von den Optionen PCRE_MULTILINE und PCRE_DOLLAR_ENDONLY nicht betroffen. Der Unterschied zwischen Z und z besteht darin, dass, wenn das Endzeichen der Zeichenfolge ein Zeilenumbruchzeichen ist, Z es als Ende der Zeichenfolge übereinstimmt, während z nur mit dem Ende der Zeichenfolge übereinstimmt.

G Stellen Sie sicher, dass ein preg_match()-Aufruf mit dem angegebenen $offset-Parameter nur dann erfolgreich ist, wenn sich die aktuelle Matching-Position am Matching-Startpunkt befindet. Wenn der Wert von $offset nicht 0 ist, unterscheidet er sich von A. Übersetzungshinweis: Ein weiterer Unterschied zu A besteht darin, dass bei Verwendung von preg_match_all() bei jedem Abgleich von G nur bestätigt wird, ob es sich um die Startposition des Übereinstimmungsergebnisses handelt, während A bestätigt, ob die Startposition des Übereinstimmungsergebnisses am Anfang liegt der Zielzeichenfolge.

Ab PHP 4.3.3 können Q und E verwendet werden, um Metazeichen regulärer Ausdrücke in Mustern zu ignorieren. Beispiel: w Q.$.E$ entspricht einem oder mehreren Wortzeichen, gefolgt von einem Punkt, einem $, einem Punkt und schließlich einem Anker am Ende der Zeichenfolge.

Seit PHP 5.2.4. Mit K kann das Matching zurückgesetzt werden. Beispielsweise entspricht „footKbar“ dem Wort „footbar“. Aber das passende Ergebnis ist „bar“. Die Verwendung von K beeinträchtigt jedoch nicht den Inhalt innerhalb der Untergruppe. Wenn beispielsweise (foot)Kbar mit „footbar“ übereinstimmt, lautet das Ergebnis in der ersten Untergruppe immer noch „foo“. Anmerkung des Übersetzers: Die Wirkung von K in der Untergruppe und außerhalb der Untergruppe ist die gleiche.


Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage