Heim  >  Artikel  >  Backend-Entwicklung  >  php – PCRE-Regex-Anker und Punkt

php – PCRE-Regex-Anker und Punkt

伊谢尔伦
伊谢尔伦Original
2016-11-21 17:24:071130Durchsuche

Anchor

Außerhalb einer Zeichenklasse ist ^ im Standard-Matching-Modus eine Behauptung, dass der aktuelle Matching-Punkt am Anfang der Zielzeichenfolge liegt. Innerhalb einer Zeichenklasse gibt ^ die Negation des in der Zeichenklasse beschriebenen Zeichens an (Einzelheiten siehe unten).

^ muss nicht das erste Zeichen des Musters sein, aber wenn es sich in einem optionalen Zweig befindet, sollte es das erste Zeichen des Zweigs sein. Wenn alle alternativen Zweige mit ^ beginnen, das heißt, wenn das Muster darauf beschränkt ist, nur mit dem Anfang des Ziels übereinzustimmen, spricht man von einem „verschärften“ Muster. (Es gibt auch andere Möglichkeiten, Befestigungsmuster zu erstellen)

$ wird verwendet, um zu bestätigen, dass der aktuelle Übereinstimmungspunkt am Ende der Zielzeichenfolge liegt, oder, wenn die Zielzeichenfolge mit einem Zeilenumbruchzeichen endet, die aktuelle Übereinstimmung Der Punkt befindet sich an der Position des Zeilenumbruchzeichens (Standard). $ muss nicht das letzte Zeichen des Musters sein, aber wenn es sich in einem optionalen Zweig befindet, sollte es am Ende dieses Zweigs stehen. $ hat in Zeichenklassen keine besondere Bedeutung. Die Bedeutung von

$ kann so geändert werden, dass nur das Ende der Zeichenfolge übereinstimmt, indem PCRE_DOLLAR_ENDONLY während der Kompilierung oder beim Abgleich festgelegt wird. Dies hat keinen Einfluss auf das Verhalten von Z-Behauptungen. Die Bedeutung der Zeichen

^ und $ ändert sich, wenn die Option PCRE_MULTILINE festgelegt ist. Wenn dies der Fall ist, stimmen sie mit den Zeichen nach und vor jedem Zeilenumbruchzeichen sowie mit dem Anfang und dem Ende der Zielzeichenfolge überein. Beispielsweise wird das Muster /^abc$/ im mehrzeiligen Modus erfolgreich mit der Zielzeichenfolge „defnabc“ übereinstimmen, normalerweise jedoch nicht. Da daher alle optionalen Zweige mit ^ beginnen, wird dies im Einzelzeilenmodus zu einem befestigten Modus, während es im Mehrzeilenmodus nicht befestigt ist. Die Option PCRE_DOLLAR_ENDONLY wird ungültig, nachdem PCRE_MULTILINE festgelegt wurde.

Hinweis: Escape-Sequenzen vom Typ A, Z, Z usw. können verwendet werden, um den Anfang und das Ende der Zielzeichenfolge in jedem Modus abzugleichen. Und wenn alle Zweige des Musters mit A beginnen, ist es auch eng, unabhängig davon, ob PCRE_MULTILINE gesetzt ist.

Punkt

Außerhalb einer Zeichenklasse entspricht ein Punkt im Muster jedem Zeichen in der Zielzeichenfolge, einschließlich nicht druckbarer Zeichen, jedoch (standardmäßig) ohne Zeilenumbrüche. Wenn PCRE_DOTALL festgelegt ist, stimmen Punkte mit Zeilenumbrüchen überein. Die Verarbeitung von Punkten hat nichts mit der Verarbeitung von ^ und $ zu tun. Ihre einzige Beziehung besteht darin, dass sie beide Zeilenumbrüche beinhalten. Punkte haben in Zeichenklassen keine Bedeutung.

C kann zum Abgleichen von Einzelbyte-Zeichen verwendet werden, was bedeutet, dass im UTF-8-Modus Punkte mit Multibyte-Zeichen übereinstimmen können.


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