Atomes dans la représentation des expressions régulières php

Atom

Atom est la plus petite unité de l'expression régulière. Pour parler franchement, l'atome est le contenu qui doit correspondre. Une expression régulière valide doit contenir au moins un atome.

Tous les caractères visibles et invisibles sont des atomes

Explication : On voit des espaces, des retours chariot, des sauts de ligne, 0-9, A-Za-z, chinois, ponctuation les marques et les symboles spéciaux sont tous des atomes.

Avant de faire l'exemple atomique, expliquons d'abord une fonction, preg_match :

int preg_match ( string $regular, string $string[, array &$result] )

Fonction : fait correspondre 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 n'est trouvé, 0 est renvoyé.

Remarque : ce qui précède sont les principaux paramètres couramment utilisés par preg_match. Je n'ai pas énuméré plusieurs autres paramètres ci-dessus. Parce que les deux autres paramètres sont trop rares.

Prouvons-le par des expériences :

<?php
//定义一个变量叫zz,放正则表达示。为了方便大家记忆,如果你英文比较ok,建议把变量名还是写成英文的$pattern。
$zz = '/a/';

$string = 'ddfdjjvi2jfvkwkfi24';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}

?>

Parce que ce que je veux, c'est faire correspondre a, et $string n'existe pas a, donc c'est un échec.

<?php
$zz = '/wq/';

$string = 'ssssswqaaaaaa';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}

?>

Il y a wq après s dans la chaîne ci-dessus, donc la correspondance est réussie.

Essayons ensuite de faire correspondre un espace :

<?php
$zz = '/ /';

$string = 'sssssw aaaaa';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}

?>

Le résultat de l'exécution est le suivant :

QQ截图20161114135142.png

À cause de cela, $ string is Il y a un espace après le caractère w de la variable. 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.

Atomes spécialement marqués

原子说明
d匹配一个0-9
D除了0-9以外的所有字符
wa-zA-Z0-9_
W除了0-9A-Za-z_以外的所有字符
s匹配所有空白字符n t r 空格
S匹配所有非空白字符
[ ]指定范围的原子


Vous devez vous en rappeler, 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.

d correspond à une valeur 0-9

<?php
$zz = '/\d/';

$string = '我爱喝9你爱不爱喝';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}

?>

D correspond à une valeur autre que 0-9

<?php
$zz = '/\D/';

$string = '121243中23453453';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}

?>

Le match a été réussi et le match a été réussi. Parce que ce n'est pas un caractère entre 0 et 9.

w correspond à a-zA-Z0-9_

<?php
$zz = '/\w/';

$string = '新中_国万岁呀万岁';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}

?>

Le match est réussi et le trait de soulignement correspond.

W correspond à un non-a-zA-Z0-9_

<?php
$zz = '/\w/';

$string = 'afasABCWEQR44231284737';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}

?>

Échec de la correspondance. Parce que tout ce qui précède est a-zA-Z0-9_, et il n'y a rien qui ne soit a-zA-Z0-9_.

s correspond à tous les caractères d'espacement n t r espaces

<?php
$zz = '/\s/';

$string = "中国万
岁";

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}

?>

correspond avec succès car il y a un retour chariot. Les caractères

S non vides

<?php
$zz = '/\s/';

$string = "        
         a       ";

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}

?>

correspondent 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.

[] Atomes dans la plage spécifiée

<?php

$zz = '/[0-5]\w+/';

$string = '6a';

$string1 = '1C';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}

?>

Conclusion :
Dans l'exemple ci-dessus, 0-5 n'a pas réussi à correspondre à $string , tandis que $string1 réussit. Parce que la première valeur de $string est 6, ce qui n'est pas compris dans la plage [0-5].

<?php

$zz = '/[a-zA-Z0-9_]\w/';

$string = 'ab';

$string1 = '9A';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}

?>

Conclusion :

$string et $string1 correspondent tous deux avec succès. Parce que w est [a-zA-Z0-9_]

<?php

$zz = '/[abc]\d+/';

$string = 'a9';

$string1 = 'b1';

$string2 = 'c5';

$string3 = 'd4';


if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}

?>

Conclusion :

$string, $string1, $string2 correspondent avec succès, mais $string3 échoue. Étant donné que $string3 dépasse la plage de [abc], il commence à d.

[^ caractère] ne correspond pas aux caractères de la plage spécifiée

<?php

$zz = '/[^0-9A-Za-z_]/';

$string = 'aaaaab311dd';

$string1 = '!$@!#%$#^##';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}

?>

Conclusion :

1. Correspondance de $string failed , mais il réussit lors de la correspondance avec $string1. Parce qu’il y a un caractère circonflexe à l’intérieur des crochets.

2.^ 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.

Résumé :

原子等价式
w[a-zA-Z0-9_]
W[^a-zA-Z0-9_]
d[0-9]
D[^0-9]
s[ tnfr]
S[^ tnfr]
Formation continue
||
<?php $zz = '/[^0-9A-Za-z_]/'; $string = 'aaaaab311dd'; $string1 = '!$@!#%$#^##'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
soumettreRéinitialiser le code
  • Recommandations de cours
  • Téléchargement du didacticiel