Parenthèses de regroupement dans les regex PHP
Dans les exemples précédents, les opérateurs de répétition n'agissaient que sur un seul caractère qui les précédait. Que faire si nous voulons les faire agir sur plusieurs caractères ?
Pour cela, il existe les parenthèses de regroupement
'(' et ')'. Elles fonctionnent ainsi :
si quelque chose se trouve entre des parenthèses de regroupement
et qu'un opérateur de répétition se trouve immédiatement après ')'
- il agira sur tout ce qui se trouve à l'intérieur des parenthèses.
Dans l'exemple suivant, le modèle de recherche est
le suivant : la lettre 'x', suivie de la chaîne 'ab'
une ou plusieurs fois, puis la lettre 'x' :
<?php
$str = 'xabx xababx xaabbx';
$res = preg_replace('#x(ab)+x#', '!', $str);
?>
En conséquence, la variable contiendra ce qui suit :
'! ! xaabbx'
Soit une chaîne :
<?php
$str = 'ab abab abab abababab abea';
?>
Écrivez une expression régulière qui trouvera les chaînes
correspondant au modèle : la chaîne 'ab' répétée
1 fois ou plus.