Accolades dans les expressions régulières PHP
Les opérateurs +, *, ? sont utiles,
cependant, ils ne permettent pas de spécifier un
nombre exact de répétitions. Dans ce cas, l'opérateur
{} viendra à votre secours.
Il fonctionne de la manière suivante : {5}
- cinq répétitions, {2,5} - se répète
de deux à cinq fois (inclus), {2,}
- se répète deux fois ou plus.
Exemple
Dans cet exemple, le modèle de recherche est le suivant :
lettre 'x', lettre 'a' une
ou deux fois, lettre 'x' :
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
En conséquence, la variable contiendra ceci :
'xx ! ! xaaax'
Exemple
Dans cet exemple, le modèle de recherche est le suivant :
lettre 'x', lettre 'a' deux
fois ou plus, lettre 'x' :
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
En conséquence, la variable contiendra ceci :
'xx xax ! !'
Exemple
Dans cet exemple, le modèle de recherche est le suivant :
lettre 'x', lettre 'a' trois
fois, lettre 'x' :
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
En conséquence, la variable contiendra ceci :
'xx xax xaax !'
Exemple
Dans cet exemple, le modèle de recherche est le suivant :
lettre 'a' dix fois :
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
En conséquence, la variable contiendra ceci :
'aaa ! aaa'
Exemple
Dans cet exemple, l'auteur du code voulait ce modèle :
lettre 'x', lettre 'a' trois
fois ou moins, lettre 'x',
mais malheureusement, cela - {,3} - ne
fonctionne pas. Il faut spécifier explicitement :
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
En conséquence, la variable contiendra ceci :
'xx ! ! !'
Exemple
Zéro est également autorisé :
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
En conséquence, la variable contiendra ceci :
'! ! ! !'
Problèmes pratiques
Soit une chaîne :
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Écrivez une expression régulière qui trouvera les chaînes
'abba', 'abbba', 'abbbba'
et seulement elles.
Soit une chaîne :
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Écrivez une expression régulière qui trouvera les chaînes
de type 'aba', dans lesquelles 'b' apparaît
moins de trois fois (inclus).
Soit une chaîne :
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Écrivez une expression régulière qui trouvera les chaînes
de type 'aba', dans lesquelles 'b' apparaît
plus de quatre fois (inclus).