Heim > Backend-Entwicklung > PHP-Tutorial > PHP-regulärer Ausdruck

PHP-regulärer Ausdruck

不言
Freigeben: 2023-03-24 19:14:01
Original
59738 Leute haben es durchsucht

Dieser Artikel stellt reguläre Ausdrücke in PHP vor, die einen gewissen Referenzwert haben. Jetzt können Freunde in Not darauf verweisen

PHP-regulärer Ausdruck

Regulärer Ausdruck ist eine grammatikalische Regel, die das Ergebnis einer Zeichenfolge beschreibt. Es handelt sich um ein bestimmtes Formatierungsmuster, das übereinstimmende Zeichenfolgen abgleichen, ersetzen und abfangen kann. Häufig verwendete Sprachen verfügen grundsätzlich über reguläre Ausdrücke wie JavaScript, Java usw. Solange Sie den regulären Gebrauch einer Sprache verstehen, ist es tatsächlich relativ einfach, die regulären Regeln anderer Sprachen zu verwenden. Okay, fangen wir an, regelmäßige Regeln zu schreiben.

Verwandte Empfehlungen:
1. Lernprogramm zur regulären Ausdruckssyntax (einschließlich Online-Testtools)
2. PHP-Schnellstart-Video-Lernprogramm

Wenn reguläre Ausdrücke mit Zeichenfolgen übereinstimmen, folgen sie den folgenden zwei Grundprinzipien:

1 Das Prinzip ganz links: Reguläre Ausdrücke beginnen immer an der Zielzeichenfolge. Beginnend an der Position ganz links. Der Abgleich wird sequentiell durchgeführt, bis der Teil, der die Anforderungen des Ausdrucks erfüllt, abgeglichen wird, oder bis das Ende der Zielzeichenfolge abgeglichen wird.
2. Das längste Prinzip: Für die übereinstimmende Zielzeichenfolge stimmt der reguläre Ausdruck immer mit dem längsten Teil überein, der die Anforderungen des regulären Ausdrucks erfüllt.

Na und ? Beginnen Sie zunächst mit dem Trennzeichen, das üblicherweise zum Einfügen von /;# verwendet wird und den Anfang einer Reihe regulärer Ausdrücke anzeigt. Zum Beispiel: „/a.*a/“. Wenn der Ausdruck zu viele Escape-Zeichen enthält, wird empfohlen, zuerst # zu verwenden, z. B. url;

$str = 'http://baidu.com';
$pattern = '/http:\/\/.*com/';//需要转义/
preg_match($pattern,$str,$match);
var_dump( $match);
Nach dem Login kopieren
$str = 'http://baidu.com';
$pattern = '#http://.*com#';//不需要转义/
preg_match($pattern,$str,$match);
var_dump( $match);
Nach dem Login kopieren

Da Sie nun wissen, wie man den Anfang und das Ende schreibt, besteht der nächste Schritt darin, die Mitte zu beurteilen. Reguläre Ausdrücke werden mithilfe von Atomen und Metazeichen von links nach rechts gespleißt.

Zum Beispiel „zxcv“, bei Übereinstimmung „/.*/“, wobei .* zxcv darstellt.

Was sind also die gemeinsamen Atome und Metazeichen?

d entspricht einem numerischen Zeichen. Entspricht [0-9].
D entspricht einem nicht numerischen Zeichen. Entspricht [^0-9].
f entspricht einem Formularvorschub. Entspricht x0c und cL.
n entspricht einem Zeilenumbruchzeichen. Entspricht x0a und cJ.
r entspricht einem Wagenrücklaufzeichen. Entspricht x0d und cM.
s entspricht jedem Leerzeichen, einschließlich Leerzeichen, Tabulatoren, Formularvorschüben usw. Entspricht [fnrtv].
S entspricht jedem Zeichen, das kein Leerzeichen ist. Entspricht [^ fnrtv].
t entspricht einem Tabulatorzeichen. Entspricht x09 und cI.
v entspricht einem vertikalen Tabulatorzeichen. Entspricht x0b und cK.
w entspricht jedem Wortzeichen, einschließlich eines Unterstrichs. Entspricht „[A-Za-z0-9_]“.
W entspricht jedem Nicht-Wort-Zeichen. Entspricht „[^A-Za-z0-9_]“.
xn entspricht n, wobei n der hexadezimale Escape-Wert ist. Der hexadezimale Escape-Wert muss genau zwei Ziffern lang sein. Beispielsweise entspricht „x41“ „A“. „x041“ entspricht „x04“ und „1“. Die ASCII-Kodierung kann in regulären Ausdrücken verwendet werden.
nm identifiziert einen oktalen Escape-Wert oder eine Rückreferenz. nm ist eine Rückwärtsreferenz, wenn vor nm mindestens nm erhältliche Unterausdrücke stehen. Wenn vor nm mindestens n steht, dann ist n eine Rückwärtsreferenz, gefolgt vom Literal m. Wenn keine der vorherigen Bedingungen erfüllt ist, stimmt nm mit dem oktalen Escape-Wert nm überein, wenn n und m beide Oktalziffern (0-7) sind.
nmlWenn n eine Oktalzahl (0-3) ist und m und l beide Oktalzahlen (0-7) sind, dann Übereinstimmung mit dem oktalen Escape-Wert nml.

un Unicode-Zeichen, dargestellt durch eine Hexadezimalzahl. Beispielsweise entspricht u00A9 dem Copyright-Symbol (?).

. Entspricht jedem einzelnen Zeichen außer „n“

^ Entspricht dem Beginn der Eingabezeichenfolge. Im Zeichenfeld [] bedeutet es Negation, z. B. „[^w]“ ist gleich „w“ und ^w bedeutet, mit einem Wortzeichen zu beginnen.

$ Entspricht der Endposition der Eingabezeichenfolge. „w$“ bedeutet beispielsweise, dass es mit einem Wortzeichen endet.

? Entspricht dem vorhergehenden Unterausdruck nullmal oder einmal , was äquivalent zu {0,1} ist, zum Beispiel kann „do(es)?“ mit „do“ oder „does“ übereinstimmen.

* Entspricht dem vorherigen Unterausdruck null oder mehrmals , entspricht {0,}. Beispielsweise stimmt zo* mit „z“, „zo“, „zoo“ überein.

+ Entspricht dem vorherigen Unterausdruck einmal oder mehrmals, entspricht {1,}. Beispielsweise kann „zo+“ mit „zo“ und „zoo“ übereinstimmen.

{n} n ist eine nicht negative ganze Zahl, die n-mal übereinstimmt. Beispielsweise stimmt „o{2}“ nicht mit „Bob“ oder „Booob“ überein, wohl aber mit den beiden o in „food“.

{n,} n ist eine nicht negative ganze Zahl. Passt mindestens n-mal zusammen. Beispielsweise stimmt „o{2,}“ nicht mit dem „o“ in „Bob“ überein, stimmt aber mit allen o in „foooood“ überein. 'o{1,}' ist äquivalent zu 'o+'. 'o{0,}' ist äquivalent zu 'o*'.

{n,m} m und n sind beide nicht negative ganze Zahlen, wobei n <= m. Übereinstimmung mindestens n-mal und höchstens m-mal. Beispielsweise entspricht „o{1,3}“ den ersten drei o in „fooooood“. „o{0,1}“ ist äquivalent zu „o?“. Bitte beachten Sie, dass zwischen dem Komma und den beiden Zahlen kein Leerzeichen stehen darf.

[] Zeichensatz (Zeichenfeld). Entspricht einem der enthaltenen Zeichen. Beispielsweise entspricht „[abc]“ dem Wort „a“ in „plain“.

() Passen Sie den Inhalt in () an und erhalten Sie diese Übereinstimmung. Mit n (n ist eine Ganzzahl größer als 1) entspricht „http://baidu.com“ „http://baidu.comhttp“,1, wenn der Ausdruck: „(w+) (:)//.*1“ lautet. Stellt http dar.

(?:) stimmt überein, erhält aber nicht das passende Ergebnis und speichert es nicht zur späteren Verwendung. Dies ist nützlich, wenn Sie das „oder“-Zeichen (|) verwenden, um Teile eines Musters zu kombinieren. Beispielsweise ist „industr(?:y|ies)“ ein kürzerer Ausdruck als „industry|industries“. Wenn der obige Ausdruck in „(?:w+)(:)//.*1“ geändert wird, wird 1 wie folgt dargestellt:

| x|y,匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。

[-] 字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。

(?=pattern)正 向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹 配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹 配的搜索,而不是从包含预查的字符之后开始。
(?!pattern)负 向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不 需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜 索,而不是从包含预查的字符之后开始

有时候最后定界符会有一个字母,如‘/as.*/i’,那这个i又是什么呢,这就是模式修正符;

i表示在和模式进行匹配进不区分大小写
m将模式视为多行,使用^和$表示任何一行都可以以正则表达式开始或结束
s如果没有使用这个模式修正符号,元字符中的"."默认不能表示换行符号,将字符串视为单行
x表示模式中的空白忽略不计
e正则表达式必须使用在preg_replace替换字符串的函数中时才可以使用(讲这个函数时再说)
A以模式字符串开头,相当于元字符^
Z以模式字符串结尾,相当于元字符$

U正则表达式的特点:就是比较“贪婪”,使用该模式修正符可以取消贪婪模式

例:

$str = &#39;asddadsdasd&#39;;
        $pattern = &#39;/a.*d/&#39;;
        preg_match($pattern,$str,$match);
        var_dump($match) ;//asddadsdasd;
       $str = &#39;asddadsdasd&#39;;                                  
        $pattern = &#39;/a.*d/U&#39;;//$pattern = &#39;/a.*?d/&#39;;
        preg_match($pattern,$str,$match);
        var_dump($match) ;//asd
Nach dem Login kopieren

php常用正则函数;

    匹配:preg_match()与preg_match_all()

        1  preg_match($pattern,$subject,[array &$matches])
        2  preg_match_all($pattern,$subject,array &$matches)

      1只会匹配一次,2会把所有符合的字符串都匹配出来,并且放置到matches数组中,而且这两个函数都有一个整形的返回          值。1是一维数组,2是二维数组

替换:preg_replace()

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
搜索subject中匹配pattern的部分, 以replacement进行替换。

相关推荐:

PHP正则表达式分享

Das obige ist der detaillierte Inhalt vonPHP-regulärer Ausdruck. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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