Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung häufig verwendeter regulärer PHP-Ausdrücke und grammatikalischer Anmerkungen

Zusammenfassung häufig verwendeter regulärer PHP-Ausdrücke und grammatikalischer Anmerkungen

WJ
WJnach vorne
2020-05-29 13:07:333000Durchsuche

Grundlegende Syntax

Trennzeichen:

identifiziert den Anfang und das Ende eines regulären Ausdrucks. Verwenden Sie „/“ oder „ #' oder '{ }', da die Syntax '{ }' auch ein regulärer Ausdrucksoperator sein kann, wird die Verwendung zur Vermeidung von Verwirrung nicht empfohlen. Die empfohlene Verwendung ist wie folgt:

Copy$pattern = '/[0-9]/';  //我喜欢这个,看起来比较简洁 $pattern = '#[0-9]#';

Atome:

Sichtbare Atome: Zeichen in der Unicode-Codierungstabelle, die mit bloßem Auge sichtbar sind nach der Tastaturausgabe, zum Beispiel: Satzzeichen; : Newline n, Tab t, Leerzeichen usw. ,
Im Allgemeinen werden nur diese drei verwendet (Newline-Zeichen werden normalerweise zusammen mit anderen Zeichen abgeglichen, da nur Newline-Zeichen nicht abgeglichen werden können)
Tipps: Sie müssen ' hinzufügen ' vor dem passenden Operator. Zum Beispiel: '+'-Zeichen, bei Übereinstimmung müssen Sie '+'

Metazeichen schreiben

Atomische Filtermethode:

|. Übereinstimmung mit zwei oder mehreren Zweigauswahlen

[] entspricht jedem Atom in eckigen Klammern
[^] entspricht jedem Zeichen außer den Atomen in eckigen Klammern; duang oder [Dd]uang Beide können mit Duang und duang übereinstimmen
Intervallschrift: [a-z] entspricht den Zeichen von a bis z, [0-9] entspricht den Zeichen von 0 bis 9. Es kann auch [a-z0-9]
sein. Entspricht jedem Zeichen außer dem Zeilenumbruch.
d entspricht jeder Dezimalziffer, d. h. {0-9]
D entspricht jeder Nicht-Dezimalziffer [^ 0-9] entspricht [^d]
s, das einem unsichtbaren Atom entspricht, also [fnrtv]
S entspricht einem sichtbaren Atom, also [fnrtv], äquivalent zu [s]z
w Entspricht jeder Zahl, jedem Buchstaben oder Unterstrich, d [w]


Quantifier

{n} bedeutet, dass das Atom davor genau n-mal vorkommt.

[n] bedeutet, dass das vorhergehende Atom mindestens n-mal vorkommt
{n,m} erscheint mindestens n-mal und höchstens m-mal

* entspricht 0-mal, einmal oder mehrmals, d. h. {0,}
+ stimmt mit einem oder mehreren Mal überein, also mit {1,}
? Stimmt mit 0 oder 1 Mal überein, also mit {0,1}


Grenzkontrolle

^ entspricht der Startposition der Zeichenfolge

$ entspricht der Endposition der Zeichenfolge
Beispiel: ^John kann mit: John übereinstimmen, aber nicht mit: 123John , da die Zeichenfolge so angegeben ist, dass sie mit John beginnt. Beginnend mit



Mustereinheit

() entspricht dem gesamten Teil als Atom, wie zum Beispiel: (X |x)iaomi, das mit Xiaomi übereinstimmen kann

Korrekturmodus

Gieriger Abgleich

Wenn das Übereinstimmungsergebnis nicht eindeutig ist, Nimm das längere (Standard)

Lazy Matching

Wenn das Matching-Ergebnis nicht eindeutig ist, wähle das kürzere, füge einfach „U“ nach „/“ hinzu regulärer Ausdruck, zum Beispiel '/[0-9]/U'; Beispiel:

Copy$subject = "test__123123123";
preg_match('/test.+123/', $subject, $matches); //贪婪模式  var_dump($matches);
preg_match('/test.+123/U', $subject, $matches); //懒惰模式var_dump($matches);

Gemeinsame Korrekturmuster:

U Lazy Matching

i Ignoriere das Fall von englischen Buchstaben
x Ignorieren Sie Leerzeichen in regulären Ausdrücken

s Lassen Sie das Metazeichen „.“ mit allen Zeichen übereinstimmen, einschließlich Zeilenumbrüchen


Allgemeine Funktionen

preg_match

werden ausgeführt. Passen Sie den regulären Ausdruck an.

preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) : int

Muster: Zu suchendes Muster, Zeichenfolgentyp. Betreff: Eingabezeichenfolge. match: Wenn der Parameter „matches“ angegeben wird, wird er mit Suchergebnissen gefüllt und die Datenstruktur ist ein eindimensionales Array. Flags: können auf PREG_OFFSET_CAPTURE gesetzt werden, wobei das 0. Element des Suchergebnisses als übereinstimmende Zeichenfolge und das 1. Element als entsprechender Offset (Position) verwendet wird. Offset: Die Suche beginnt an der Startposition der Zielzeichenfolge.

Rückgabewert: Anzahl der Übereinstimmungen

Ähnlich wie bei der Funktion preg_match_all stimmen die Parameter mit preg_match überein

Unterschied:


preg_match: stimmt nur einmal überein, das Datenergebnis der Suche Strukturübereinstimmung ist ein eindimensionales Array preg_match_all: Übereinstimmung mit allen, die Datenstruktur der Suchergebnisübereinstimmung ist ein zweidimensionales Array.

preg_replace

Führt eine Suche und Ersetzung regulärer Ausdrücke durch und der Rückgabewert ist die ersetzte Zeichenfolge.

preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed

pattern: das zu durchsuchende Muster. Kann eine Zeichenfolge oder ein Array von Zeichenfolgen sein. Ersetzung: eine Zeichenfolge oder ein Array von Zeichenfolgen, die zum Ersetzen verwendet wird. Betreff: eine Zeichenfolge oder ein Array von Zeichenfolgen, die durchsucht und ersetzt werden soll. limit: die maximale Anzahl von Ersetzungen. Der Standardwert ist -1 (unbegrenzt). count: Anzahl der Ersetzungen.

Ähnlich wie bei der Funktion preg_filter sind die Parameter dieselben wie bei preg_replace

Unterschiede (der Unterschied ist nur sichtbar, wenn Arrays zum Abgleichen verwendet werden): preg_replace: gibt alle Ergebnisse zurück, unabhängig davon, ob es eine Ersetzung gibt oder nicht, nur preg_filter: gibt passende Ergebnisse zurück.


preg_split

Zeichenfolgen durch einen regulären Ausdruck trennen

preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] ) : array

$pattrn:用于搜索的模式,字符串形式。subject:输入字符串limit:将限制分隔得到的子串最多只有limit个,返回的最后一个 子串将包含所有剩余部分。flags:有以下标记的组合:
-- 1. PREG_SPLIT_NO_EMPTY: 返回分隔后的非空部分。
-- 2. PREG_SPLIT_DELIM_CAPTURE: 用分隔符'()'括号把匹配的捕获并返回。
-- 3. PREG_SPLIT_OFFSET_CAPTURE: 匹配返回时将会附加字符串偏移量

PREG_SPLIT_DELIM_CAPTURE这个参数可能比较难明白,举个例子看看:

Copy$subject = "1a23b";  
$a = preg_split('/[\d]/', $subject, -1, PREG_SPLIT_NO_EMPTY);  
var_dump($a);  
$a = preg_split('/([\d])/', $subject, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 
var_dump($a);

输出如下:

array (size=2)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
array (size=5)
0 => string '1' (length=1)
1 => string 'a' (length=1)
2 => string '2' (length=1)
3 => string '3' (length=1)
4 => string 'b' (length=1)

preg_grep

返回匹配模式的数组条目

preg_grep ( string $pattern , array $input [, int $flags = 0 ] ) : array

$pattern:要搜索的模式,字符串形式$input:输入数组flags:如果不设置则返回匹配的数目,设置PREG_GREP_INVERT则返回不匹配的数目。

preg_quote

转义正则表达式字符,返回为转义后的字符串

preg_quote ( string $str [, string $delimiter = NULL ] ) : string

str:输入字符串delimiter:需要转义的字符串

Das obige ist der detaillierte Inhalt vonZusammenfassung häufig verwendeter regulärer PHP-Ausdrücke und grammatikalischer Anmerkungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen