Heim  >  Artikel  >  Web-Frontend  >  Reguläre Ausdrücke (Grammatik)

Reguläre Ausdrücke (Grammatik)

亚连
亚连Original
2018-05-21 09:35:441204Durchsuche

Jetzt bringe ich Ihnen einen Artikel über reguläre Ausdrücke (Grammatikempfehlung). Lassen Sie mich es jetzt mit Ihnen teilen und es allen als Referenz geben.

Konstruktionszusammenfassung des regulären Ausdrucks

Konstruktionsübereinstimmung

Zeichen

x Zeichen x
\ Backslash-Zeichen

(?:X) X) X) X, über ein positives Lookbehind mit der Breite Null ----------------------



Backslash, Escape und Zitat


Das Backslash-Zeichen ('') wird für Anführungszeichen-Escape-Konstrukte verwendet, wie in der oben definierten Tabelle gezeigt, und wird auch verwendet, um auf andere Zeichen zu verweisen, die als Konstrukte ohne Escapezeichen interpretiert werden. Daher entspricht der Ausdruck \ einem einzelnen Backslash und { einer öffnenden Klammer.

Es ist ein Fehler, vor jedem alphabetischen Zeichen einen Backslash zu verwenden, der kein Escape-Konstrukt darstellt. Diese sind für zukünftige Erweiterungen der regulären Ausdruckssprache reserviert. Ein Backslash kann vor einem nicht-alphabetischen Zeichen verwendet werden, unabhängig davon, ob das Zeichen Teil eines Unescape-Konstrukts ist.

Backslashes in Zeichenfolgen im Java-Quellcode werden als Unicode-Escapezeichen oder andere Zeichen-Escapezeichen interpretiert, wie in der Java-Sprachspezifikation gefordert. Daher müssen Sie im Zeichenfolgenliteral zwei Backslashes verwenden, um anzugeben, dass der reguläre Ausdruck vor der Interpretation durch den Java-Bytecode-Compiler geschützt ist. Wenn es beispielsweise als regulärer Ausdruck interpretiert wird, entspricht das Zeichenfolgenliteral „b“ einem einzelnen Rückschrittzeichen, während „\b“ einer Wortgrenze entspricht. Das String-Literal „(hello)“ ist unzulässig und verursacht einen Fehler bei der Kompilierung; um mit dem String (hello) übereinzustimmen, muss das String-Literal „\(hello\)“ verwendet werden. Zeichenklassen

Zeichenklassen können innerhalb anderer Zeichenklassen auftreten und den Vereinigungsoperator (implizit) und den Schnittmengenoperator (&&) enthalten. Der Union-Operator stellt eine Klasse dar, die alle Zeichen in mindestens einer ihrer Operandenklassen enthält. Der Schnittmengenoperator stellt eine Klasse dar, die alle Zeichen enthält, die in beiden Operandenklassen vorkommen.

Die Rangfolge der Zeichenklassenoperatoren ist wie folgt, in der Reihenfolge vom höchsten zum niedrigsten:

1 Literaler Wert, der x maskiert 2 Gruppierung [ ...]

3 Bereich a-z

4 Vereinigung [a-e][i-u]

5 Schnittpunkt [a-z&&[aeiou]]

Beachten Sie, dass sich tatsächlich verschiedene Sätze von Metazeichen innerhalb einer Zeichenklasse befinden. nicht außerhalb davon. Beispielsweise verliert der reguläre Ausdruck seine besondere Bedeutung innerhalb einer Zeichenklasse, während der Ausdruck zu einem Bereich wird, der Metazeichen bildet.


Zeilenabschlusszeichen


Zeilenabschlusszeichen ist eine Folge von einem oder zwei Zeichen, die das Ende einer Zeile für eine Folge von Eingabezeichen markiert. Die folgenden Codes werden als Zeilenabschlusszeichen erkannt:

neues Zeilenzeichen (Zeilenvorschub) ('n'),

Wagenrücklaufzeichen ("rn"), gefolgt von einem neuen Zeilenzeichen, allein Wagenrücklauf ('r'), nächstes Zeilenzeichen ('u0085'), Zeilentrennzeichen ('u2028') oder Absatztrennzeichen ('u2029).

Wenn der UNIX_LINES-Modus aktiviert ist, ist das Newline-Zeichen das einzige erkannte Zeilenendezeichen.

Wenn das DOTALL-Flag nicht angegeben ist, kann der reguläre Ausdruck mit jedem Zeichen übereinstimmen (außer Zeilenabschlusszeichen).


Standardmäßig ignorieren die regulären Ausdrücke ^ und $ Zeilenabschlusszeichen und stimmen jeweils nur mit dem Anfang und dem Ende der gesamten Eingabesequenz überein. Wenn der MULTILINE-Modus aktiviert ist, erfolgt der ^-Abgleich am Anfang der Eingabe und nach dem Zeilenende (am Ende der Eingabe). Im MULTILINE-Modus stimmt $ nur vor einem Zeilenabschlusszeichen oder am Ende der Eingabesequenz überein.



Gruppen und Erfassungen

Erfassungsgruppen können nummeriert werden, indem ihre öffnenden Klammern von links nach rechts gezählt werden. Im Ausdruck ((A)(B(C))) gibt es beispielsweise vier solcher Gruppen:

1 ((A)(B(C)))

2 A 3 (B(C)) 4 (C) Gruppe Null repräsentiert immer den gesamten Ausdruck.

Die einfangenden Gruppen werden auf diese Weise benannt, da im Match jede Teilsequenz der Eingabesequenz, die mit diesen Gruppen übereinstimmt, gespeichert wird. Die erfasste Teilsequenz kann später über eine Back-Referenz in einem Ausdruck verwendet oder nach Abschluss des Matching-Vorgangs vom Matcher abgerufen werden.

Die mit einer Gruppe verknüpfte Erfassungseingabe ist immer die Teilsequenz, die der Gruppe am nächsten kommt. Wenn eine Gruppe aufgrund der Quantisierung erneut berechnet wird, bleibt ihr zuvor erfasster Wert (falls vorhanden) erhalten, wenn die zweite Berechnung fehlschlägt. Wenn Sie beispielsweise die Zeichenfolge „aba“ mit dem Ausdruck (a(b)?)+ vergleichen, wird festgelegt die zweite Gruppe zu „b“. Zu Beginn jedes Spiels werden alle erfassten Eingaben verworfen.

Eine Gruppe, die mit (?) beginnt, ist eine reine Nichterfassungsgruppe, die keinen Text erfasst und nicht auf die Gesamtsumme angerechnet wird.

Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

Was sind die häufigsten Szenarien, in denen Schließungen in JS ausgenutzt werden können? (Bild- und Text-Tutorial)

Wie kopiere ich ein Objekt in js? (Bild- und Text-Tutorial)

Ein Beispiel für die Verwendung von js zur Implementierung eines Message Boards (Code bereitgestellt)

Das obige ist der detaillierte Inhalt vonReguläre Ausdrücke (Grammatik). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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