Maison >développement back-end >tutoriel php >Explication détaillée des expressions régulières
Le langage d'expression régulière se compose de deux types de caractères de base : les caractères de texte littéraux (normaux) et les métacaractères.
Recommandations associées :le métacaractère a des capacités de traitement utilisant des expressions régulières. Les métacaractères peuvent être n'importe quel caractère unique placé dans
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 Le <.>
(par exemple, [ ]
signifie correspondre à un seul caractère minuscule [a]
), ou il peut s'agir d'une séquence de caractères (comme a
signifie correspondre à n'importe quel caractère entre [a-d]
caractères, et a 、b、 c、 d
représente les lettres, chiffres et traits de soulignement anglais), les métacaractères courants sont les suivants : w
Description | Instructions spéciales | ||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
. |
Faire correspondre n'importe quel caractère sauf la nouvelle ligne () | ~ | |||||||||||||||||||||||||||||||||||||||||||||
[abcde] |
Faire correspondre n'importe quel caractère dans a b c d e
|
Tous les caractères sont ou
|
|||||||||||||||||||||||||||||||||||||||||||||
[a-h] |
Faire correspondre n'importe quel caractère entre
h
|
~ | |||||||||||||||||||||||||||||||||||||||||||||
[^fgh] |
ne correspond à aucun caractère dans fgh |
Ajouter ^ avant le premier caractère de la parenthèse à nierne correspond à aucun caractère apparaissant à l'intérieur de la parenthèse |
|||||||||||||||||||||||||||||||||||||||||||||
td> | Correspond aux caractères anglais majuscules et minuscules, à tout nombre compris entre 0 et 9, ainsi qu'aux traits de soulignement, équivalents à [a- zA-Z0-9_]
|
~ td> | |||||||||||||||||||||||||||||||||||||||||||||
W |
& Au contraire, équivalent à [^a-zA-Z0-9_]
|
~ | |||||||||||||||||||||||||||||||||||||||||||||
s code> |
correspond à n'importe quel caractère d'espacement, équivalent à [fnrtv]
|
~ | |||||||||||||||||||||||||||||||||||||||||||||
S | est l'opposé de s, équivalent à [^s]
|
~ | |||||||||||||||||||||||||||||||||||||||||||||
d |
Correspond à n'importe quel nombre entre 0 et 9, équivalent à [0-9] |
~ | |||||||||||||||||||||||||||||||||||||||||||||
D |
est l'opposé de d , équivalent à [^0-9]
| ~ | |||||||||||||||||||||||||||||||||||||||||||||
[u4e00-u9fa5] |
Correspond à n'importe quel caractère chinois (chinois) (les caractères chinois représentés par l'encodage Unicode sont utilisés ici) |
~ | |||||||||||||||||||||||||||||||||||||||||||||
b |
Faire correspondre le début ou la fin d'un mot | ~ | |||||||||||||||||||||||||||||||||||||||||||||
^
| Le début de la chaîne correspondante est placé avant le premier caractère des crochets et devient inverse |
||||||||||||||||||||||||||||||||||||||||||||||
$ |
Faire correspondre la fin de la chaîne | ~ |
n
Si ce qui apparaît avant est un caractère, alors ce caractère est une unité
字符 | 描述 | 特别说明 |
---|---|---|
* |
匹配 0 到 多 个元字符,相当于 {0,}
|
~ |
? |
匹配 0 到 1 个元字符, 相当于 {0,1}
|
~ |
+ |
匹配至少 1 个元字符,相当于 {1,}
|
~ |
{n} |
匹配 n 个元字符 | ~ |
{n,} |
匹配至少 n 个元字符 | ~ |
{n,m} |
匹配 n 到 m 个元字符 | ~ |
b |
匹配单词边界 | ~ |
^ |
字符串必须以指定的字符开始 | ~ |
$ |
字符串必须以指定的字符结束 | ~ |
分组
, par exemple, ^(13)[4-9]d{8}$
représente n'importe quel caractère commençant par 13 Numéro de téléphone portable commençant par. abcabcabc+
signifie que la dernière lettre c
apparaît 1 ou plusieurs fois ; (abcabcabc)+
signifie que la chaîne entière abcabcabc
apparaît 1 ou plusieurs fois. |
pour représenter la relation entre 或
, par exemple, z|j|q
signifie correspondre à n'importe quelle lettre de z 、j、q
. En fait, cela équivaut à [zjq]
. ab|cd|ef
signifie : soit ab
, cd
ou ef
. a(b|cd|e)f
signifie : commençant par a
, soit b
, cd
ou e
, et enfin se terminant par f
. |
(或
) est les parenthèses (( )
) [0-9A-Z.?]
Ce régulier Comment tu comprends ? .
et ?
apparaissent entre crochets , .
et ?
deviendront des caractères ordinaires, qui sont un point et un point d'interrogation. Vous pouvez comprendre que la priorité de [ ]
est supérieure à la priorité de . 和 ?
. ?aaa.bbb
, rappelez-vous ici que . 和 ?
est traitée comme un caractère normal. La structure multi-sélection est en fait l'utilisation de métacaractères |
(ou).
Plage de définition : début, fin, parenthèses
Régulier | Signification | ||||||||
---|---|---|---|---|---|---|---|---|---|
Windows98|Windows2000|WindowsXP |
correspond à Windows98 ou Windows2000 ou WindowsXP |
||||||||
^Windows98|Windows2000|WindowsXP$ |
Utiliser Windows98 code > commence par <code>Windows2000 ou se termine par WindowsXP
^ et $ sont tous deux inclus dans la portée de , car sont uniquement : début, fin, parenthèses
|
||||||||
Windows(98|2000|XP) |
Windows puis 98 ou 2000 ou XP
|
Résumé : La structure multi-sélection peut inclure de nombreux caractères, mais elle ne peut pas dépasser les limites de 括号
.
(d{1,3}.){3}d{1,3}
mais elle correspondra également à l'adresse IP impossible ((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)
Avec le 左括号
Explication simple : Dans les expressions régulières, les parenthèses sont utilisées pour diviser (regrouper) le devant, puis le contenu correspondant aux parenthèses
est citéb(w+)bs+1b
, etc. (La première parenthèse est where where go, tom tom happy
comme marque et comptez simplement les parenthèses de gauche à droite. Regarder autour ne correspond à aucun caractère, seulement à la
position spécifique dans le texte. Semblable à , 1
, 2
. 1
Regarder autour de soi ne prend pas de caractères. (w+(.?))
(
b
^
$
derrière la position peut correspondre (?=exp)
Dans l'ordre inverse exp
(?=d)
(?!exp)
. Par exemple : Le côté gauche de la position actuelle est le numéro exp
(?!d)
(?<=exp)
exp
(?<=d)
(?<!exp)
Lorsque l'expression régulière contient un quantificateur qui accepte les répétitions le comportement habituel de exp
est de faire correspondre autant de caractères (?!d)
que possible. +
Nous avons besoin de *
correspondance paresseuse{3,12}
, c'est-à-dire de faire correspondre le moins de caractères possible. Les quantificateurs donnés ci-dessus peuvent être convertis en modèles de correspondance paresseuse, ajoutez simplement un point d'interrogation après a.*b
qui font que l'ensemble du a
match est réussi. b
aabab
aabab
correspond à la chaîne la plus courte commençant par et se terminant par . Si vous l'appliquez à ?
La différence entre le mode gourmand et le mode paresseux est : .*?
Le mode paresseux a un point d'interrogation supplémentaire après le quantificateur a.*?b
a
Avancé 5 - Priorité de la correspondance de modèles b
aabab
Lorsque vous utilisez des expressions régulières, vous devez faire attention à l'ordre de correspondance. Habituellement, la même priorité aab
est calculée de gauche à droite ab
, et les opérations avec des priorités différentes sont va de haut en bas
comme indiqué dans le tableau suivant.
顺序 元字符 描述 1 转义字符 2 ()
、(?:)
、(?=)
、[]
模式单元和原子表 3 *
、+
、?
、{n}
、{n,}
、{n,m}
重复匹配 4 ^
、$
、b
、B
、A
、Z
边界限制 5 |
模式选择 Exemple
1. Échappement de caractère
1Q : Comment dois-je écrire l'expression régulière pour faire correspondre le
33333333333
dans la chaîne$
?
2Q : Si la fonctionpreg_match
en PHP utilise respectivement les expressions de guillemets simples et de guillemets doubles pour correspondre au$
ci-dessus, comment l'écrire ?Réponse :
- La règle requise pour l'expression est
$
- Utiliser des guillemets simples pour représenter la chaîne ci-dessus
'/\$/'
. (Pour faciliter la visualisation, nous l'avons divisé en'/\ \ \ $/'
)- Utilisez des guillemets doubles pour représenter la chaîne ci-dessus
"/\$/"
. (Pour faciliter la visualisation, nous l'avons divisé en"/\ \ \ $/"
)- Que demandez-vous ?
Une autre réponse :
- Les guillemets simples en PHP n'échappent à aucun caractère, mais seul
est échappé, nous avons donc besoin de 6
pour générer des expressions.
En plus d'échapper à
, les guillemets doubles ont également besoin d'un
supplémentaire pour s'échapper
$
, il en faut donc 7.
Recommandations de didacticiels associées : Tutoriel vidéo 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!