Maison > développement back-end > tutoriel php > expression régulière php

expression régulière php

不言
Libérer: 2023-03-24 19:14:01
original
59742 Les gens l'ont consulté

Cet article présente les expressions régulières en PHP, qui ont une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

expression régulière php

<.>L'expression régulière est une règle grammaticale qui décrit le résultat d'une chaîne. Il s'agit d'un modèle de formatage spécifique qui peut faire correspondre, remplacer et intercepter les chaînes correspondantes. Les langages couramment utilisés ont essentiellement des expressions régulières, telles que JavaScript, Java, etc. En fait, tant que vous comprenez l’usage régulier d’une langue, il est relativement simple d’utiliser les règles habituelles d’autres langues. Bon, commençons à écrire des règles régulières.

Recommandations associées :
1.
Tutoriel sur la syntaxe des expressions régulières (y compris les outils de test en ligne)2
Tutoriel vidéo de démarrage rapide des expressions régulières PHP
Lorsque les expressions régulières correspondent à des chaînes, elles suivent les deux principes de base suivants :

1 Le principe le plus à gauche : Les expressions régulières commencent toujours à partir de la chaîne cible. En partant de la position la plus à gauche, la correspondance est effectuée séquentiellement jusqu'à ce que la partie qui répond aux exigences de l'expression soit mise en correspondance, ou jusqu'à ce que la fin de la chaîne cible soit mise en correspondance.

2. Le principe de la plus longue : pour la chaîne cible correspondante, l'expression régulière correspondra toujours à la partie la plus longue qui répond aux exigences de l'expression régulière ; c'est-à-dire le mode gourmand



Et alors ? Pour commencer, commencez par le délimiteur, couramment utilisé include / ; #;, qui est utilisé pour indiquer le début d'une série d'expressions régulières. Par exemple : « /a.*a/ ». Lorsque l'expression contient trop de caractères d'échappement, il est recommandé d'utiliser d'abord #, tel que url ; Les expressions régulières sont assemblées à l'aide d'atomes et de métacaractères de gauche à droite.

Par exemple, 'zxcv', lors de la correspondance, '/.*/', où .* représente zxcv.

$str = &#39;http://baidu.com&#39;;
$pattern = &#39;/http:\/\/.*com/&#39;;//需要转义/
preg_match($pattern,$str,$match);
var_dump( $match);
Copier après la connexion
$str = &#39;http://baidu.com&#39;;
$pattern = &#39;#http://.*com#&#39;;//不需要转义/
preg_match($pattern,$str,$match);
var_dump( $match);
Copier après la connexion
Alors, quels sont les atomes et métacaractères communs ?

d correspond à un caractère numérique. Équivalent à [0-9].
D correspond à un caractère non numérique. Équivalent à [^0-9].
f correspond à un saut de formulaire. Équivalent à x0c et cL.
n correspond à un caractère de nouvelle ligne. Équivalent à x0a et cJ.
r correspond à un caractère de retour chariot. Équivalent à x0d et cM.
s correspond à n'importe quel caractère d'espacement, y compris les espaces, les tabulations, les sauts de formulaire, etc. Équivalent à [fnrtv].
S correspond à tout caractère autre qu'un espace. Équivalent à [^ fnrtv].
t correspond à un caractère de tabulation. Équivalent à x09 et cI.
v correspond à un caractère de tabulation verticale. Équivalent à x0b et cK.
w correspond à n'importe quel caractère de mot, y compris un trait de soulignement. Équivalent à '[A-Za-z0-9_]'.
W correspond à n'importe quel caractère autre qu'un mot. Équivalent à « [^A-Za-z0-9_] ».
xn correspond à n, où n est la valeur d'échappement hexadécimale. La valeur d’échappement hexadécimale doit comporter exactement deux chiffres. Par exemple, « x41 » correspond à « A ». « x041 » est équivalent à « x04 » et « 1 ». Le codage ASCII peut être utilisé dans les expressions régulières.
nm identifie une valeur d'échappement octale ou une référence arrière. nm est une référence vers l'arrière si nm est précédé d'au moins nm sous-expressions pouvant être obtenues. Si nm est précédé d'au moins n, alors n est une référence vers l'arrière suivie du littéral m. Si aucune des conditions précédentes n'est remplie, alors nm correspondra à la valeur d'échappement octale nm si n et m sont tous deux des chiffres octaux (0-7).
nmlSi n est un nombre octal (0-3), et m et l sont tous deux des nombres octaux (0-7), alors correspond à la valeur d'échappement octale nml.

un Caractère Unicode représenté par un nombre hexadécimal. Par exemple, u00A9 correspond au symbole de droit d'auteur (?).

. Correspond à n'importe quel caractère sauf "n"

^ Correspond au début de la chaîne d’entrée. Dans le champ de caractère [], cela signifie une négation, par exemple « [^w] » est égal à « w » et ^w signifie commencer par un caractère de mot.

$ Correspond à la position finale de la chaîne d'entrée. Par exemple, « w$ » signifie se terminer par un caractère de mot.

? Correspond à la sous-expression précédente zéro fois ou une fois qui équivaut à {0,1}, par exemple, "do(es)?" peut correspondre à "do" ou "does".

* Correspond à la sous-expression précédente zéro ou plusieurs fois , équivalent à {0,}. Par exemple, zo* correspond à "z", "zo", "zoo".

+ Correspond à la sous-expression précédente une ou plusieurs fois, équivalent à {1,} Par exemple, 'zo+' peut correspondre à "zo" et "zoo".

{n} n est un entier non négatif, apparié n fois. Par exemple, « o{2} » ne correspond pas à « Bob » ou « Booob », mais il correspond aux deux o de « food ».

{n,} n est un entier non négatif. Faites correspondre au moins n fois. Par exemple, "o{2,}" ne correspond pas au "o" de "Bob", mais il correspond à tous les o de "foooood". 'o{1,}' équivaut à 'o+'. 'o{0,}' équivaut à 'o*'.

{n,m} m et n sont tous deux des entiers non négatifs, où n <= m. Faites correspondre au moins n fois et au plus m fois. Par exemple, "o{1,3}" correspondra aux trois premiers o de "fooooood". « o{0,1} » est équivalent à « o ? ». Veuillez noter qu'il ne peut y avoir d'espace entre la virgule et les deux chiffres.

[] Jeu de caractères (champ de caractères). Correspond à l'un des caractères contenus. Par exemple, « [abc] » correspond à « a » dans « plain ».

() Faites correspondre le contenu entre () et obtenez cette correspondance. Avec n (n est un entier supérieur à 1), 'http://baidu.com' correspond à 'http://baidu.comhttp',1 si l'expression : '(w+) (:)//.*1' Représente http.

(?:) correspond mais n'obtient pas le résultat correspondant et ne le stocke pas pour une utilisation ultérieure. Ceci est utile lorsque vous utilisez le caractère « ou » (|) pour combiner des parties d'un motif. Par exemple, « industr(?:y|ies) est une expression plus courte que « industry|industries ». Si l'expression ci-dessus est remplacée par '(?:w+)(:)//.*1', alors 1 est représenté par :

| 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
Copier après la connexion

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正则表达式分享

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal