La commande 'ou' dans les expressions régulières PHP
Dans cette leçon, nous analyserons la commande
|, qui représente une variante plus
puissante de OU par rapport à la
commande []. Cette commande permet
de diviser l'expression régulière en plusieurs parties.
La correspondance peut alors satisfaire soit une
partie de l'expression régulière, soit une autre. Voyons
cela avec des exemples.
Exemple
Dans cet exemple, le modèle de recherche est : trois
lettres 'a' ou trois lettres 'b' :
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
En conséquence, la variable contiendra ce qui suit :
'! ! abb'
Exemple
Dans cet exemple, le modèle de recherche est : trois
lettres 'a' ou de 1 à plusieurs
lettres 'b' :
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
En conséquence, la variable contiendra ce qui suit :
'! ! ! ! axx'
Exemple
Dans cet exemple, le modèle de recherche est : une lettre ou plus ou trois chiffres :
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
En conséquence, la variable contiendra ce qui suit :
'! ! ! 1 12 !'
Exemple
La barre verticale peut diviser l'expression régulière non pas en deux parties, mais en un nombre quelconque de parties :
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
En conséquence, la variable contiendra ce qui suit :
'! ! ! ddd'
Exemple
Si la barre verticale est à l'intérieur de parenthèses
simples, alors le 'ou' fonctionne seulement à l'intérieur
de ces parenthèses. Par exemple, trouvons les chaînes
selon le modèle suivant : au début se trouve
soit 'a', soit 'b' une ou plusieurs
fois, puis deux lettres 'x' :
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
En conséquence, la variable contiendra ce qui suit :
'! ! ! exx'
Tâches pratiques
Soit la chaîne :
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Écrivez une expression régulière qui trouvera les chaînes
selon le modèle : sur les bords se trouvent les lettres 'a',
et entre elles - soit la lettre 'e' un nombre
quelconque de fois, soit la lettre 'x' un nombre
quelconque de fois.
Soit la chaîne :
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Écrivez une expression régulière qui trouvera les chaînes
selon le modèle : sur les bords se trouvent les lettres 'a',
et entre elles - soit la lettre 'e' deux fois
soit la lettre 'x' un nombre quelconque de fois.