Tutoriel de développement PHP de base : atomes dans les expressions régulières
1. Atome
Atom est la plus petite unité de l'expression régulière Pour le dire franchement, l'atome est le contenu qui doit être mis en correspondance. Une expression régulière valide doit contenir au moins un atome.
Tous les caractères visibles et invisibles sont des atomes
Remarque : les espaces, les retours chariot, les sauts de ligne, 0-9, A-Za-z, le chinois et les signes de ponctuation que nous voyons , les symboles spéciaux sont tous des atomes.
Avant de faire l'exemple atomique, expliquons d'abord une fonction, preg_match :
Syntaxe :
int preg_match ( string $regular , string $string[, array &$result] )
Fonction : Correspond à la variable $string basée sur la variable $regular. S'il existe, renvoyez le nombre de correspondances et placez les résultats correspondants dans la variable $result. Si aucun résultat correspondant n'est trouvé, renvoyez 0
Remarque : ce qui précède sont les principaux paramètres couramment utilisés par preg_match. Je n'ai pas répertorié plusieurs autres paramètres ci-dessus. Parce que les deux autres paramètres sont trop rares.
Vérifions-le via le programme :
Exemple : Le code est le suivant
<?php //定义一个变量pattern,存放正则表达式 $pattern = '/a/'; //待搜素字段 $string = 'ddfdjjvi2jfvkwkfi24'; //判断,如果匹配到了,输出$matcges的值 if(preg_match($pattern, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
Résultat :
Parce que ce que je veux, c'est faire correspondre a, et $string n'existe pas en tant que a, donc il échoue.
Transformer cet exemple
Exemple : Le code est le suivant
<?php //定义一个变量pattern,存放正则表达式 $pattern = '/f/'; //待搜素字段 $string = 'ddfdjjvi2jfvkwkfi24'; //判断,如果匹配到了,输出$matcges的值 if(preg_match($pattern, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
Résultat :
Le chaîne ci-dessus Il y a f dedans, donc la correspondance est réussie
Ensuite, nous essayons de faire correspondre un espace :
Exemple : comme suit
<?php $zz = '/ /'; $string = 'sssssw aaaaa'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
Résultat :
Pour cette raison, il y a un espace après le caractère w de la variable $string. La correspondance est donc réussie et le type de chaîne est généré avec une longueur de 1. C'est juste que nos yeux nus sont invisibles et ne peuvent pas voir cette corde.
2. Atomes spécialement marqués
Remarque : chacun doit être mémorisé ici. En live, il est préférable d'atteindre le niveau dictée. Lors de la mémorisation, rappelez-vous que par paires, d correspond à un 0-9, puis D correspond à tous les caractères sauf 0-9.
Ce qui précède a été expliqué très clairement. Menons des expériences pour les apprendre étape par étape.
Lorsque vous étudiez, assurez-vous d'atteindre le niveau de dictée pour ces atomes. Parce que lorsque nous ferons des expériences dans le futur, vous l'apprendrez petit à petit.
3.d correspond à un 0-9
Le code est le suivant :
<?php $zz = '/\d/'; $string = '床9前明月光'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
4. D correspond à une valeur autre que 0-9
Exemple : Le code est le suivant
<?php header("Content-type:text/html;charset=utf-8"); $zz = '/\D/'; $string = '121243中23453453'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
w correspond à a-. zA-Z0-9_
L'exemple est le suivant
<?php $zz = '/\w/'; $string = '新中_国万岁呀万岁'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
W correspond à un non-a-zA-Z0-9_
L'exemple est le suivant
<?php $zz = '/\W/'; $string = 'afasABCWEQR44231284737'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
7 s correspond à tous les caractères d'espacement n t r espaces
. L'exemple est le suivant
<?php $zz = '/\s/'; $string = "中国万 岁"; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
8. L'exemple de caractère non nul
est le suivant :
<?php $zz = '/\S/'; $string = " a "; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
correspond avec succès. Bien qu'il y ait des espaces, des retours chariot et des retraits dessus. Cependant, il existe un caractère non-espace a. Le match est donc réussi.
9. [] Spécifiez la plage d'atomes
L'exemple est le suivant
<?php $zz = '/[0-5]\w+/'; $string = '6a'; $string1 = '1C'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
Essayez à nouveau et changez $ string à $ string1, voyez si cela correspond à
Conclusion :
Dans l'exemple ci-dessus, 0-5 n'a pas réussi à correspondre à $string, mais $string1 a réussi. Parce que la première valeur de $string est 6, ce qui n'est pas compris dans la plage [0-5].
10. [^ caractère] ne correspond pas aux caractères dans l'intervalle spécifié
Le code est le suivant :
<?php $zz = '/[^0-9A-Za-z_]/'; $string = 'aaaaab311dd'; $string1 = '!$@!#%$#^##'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
Conclusion :
n'a pas réussi à faire correspondre $string, mais a réussi lors de la correspondance avec $string1. Parce qu’il y a un caractère circonflexe à l’intérieur des crochets.
^ La fonction du caractère circonflexe à l'intérieur des crochets n'est pas de faire correspondre les caractères à l'intérieur des crochets.
11.Résumé