Recherche d'un caractère ou d'une liste de caractères dans une chaîne
Cette exemple simple recherche le caractère "a" dans la chaîne $chaine.
<?
$motif = "a";
if (ereg($motif,$chaine)) {
echo "Le mot $chaine contient le motif $motif";
}
?>
Note : Pour rechercher plusieurs caractères dans la chaîne, il suffit de border de crochets les caractères à rechercher.
$motif="[abc]";
ereg recherche alors toutes les chaînes contenant a,b ou c.
Syntaxe du crochet [ ] :
- Recherche de caractères
[abc] : permet de retrouver le caractère a ou b ou c dans une chaine
- Recherche dans une plage de caractère
[A-Z] : permet de retrouver toutes les majuscules, de façon général permet de retrouver tous les caractères situés entre la première et la dernière lettre (ici entre A et Z) .
Ex. [0-9] : retrouve toutes les chaînes contenant un nombre
- Recherche d'un caractère particulier
Le caractère "^" étant un caractère réservé, pour le rechercher, il faut le faire précéder d'un antislash "\". De façon général, tous caractères ayant une signification particulière pour les expressions régulières, doit être précédé d'un antislash "\"
[\^] : recherche le caractère "^" dans la chaîne
Caractères à signification particulière : ^ $ ( ) | * + ? { } \ . [ ]
- Exclure une plage de caractère
Le caret ^ placé devant une séquence du type car1-car2 permet d'exclure tous les caractères inclus entre car1 et car2.
Ex. [^0-9] : exclu les chiffres de la chaine
>> Voir également Annexe
Recherche d'une chaîne de caractère
Dans la partie précédente, nous recherchions des chaînes contenant au moins un des caractères du motif spécifié (ou), maintenant abordons la recherche dans le cas ou l'ensemble du motif est contenu dans la chaine de caractère.
<?
/* on recherche dans cet exemple
le mot clermont dans la chaine $chaine
*/
$motif = "clermont";
if (ereg($motif,$chaine)) {
echo "Le mot $chaine contient le motif $motif";
}
?>
Syntaxe pour la recherche de chaine de caractère
- Le caractère .
Le caractère "." permet de remplacer un caractère.
Ex. $motif = "pap." pourra retourner "pape" ou "papa"
- Le caractère ?
permet d'indiquer que le caractère précédent peut apparaître ou non dans la chaîne recherchée.
Ex. $motif = "belg?" pourra retourner "belgique" ou "belle"
- Le caractère +
permet d'indiquer que le caractère précédent peut apparaître une ou plusieurs fois dans la chaîne
Ex. "b+" pourra retourner tous les mots contenant "bb" ou "b" ou "bbbbb"
- Le caractère *
identique au précédent, si ce n'est que le caractère précédent peut également ne pas apparaître dans la chaîne
Ex. "pa*" pourra retourner "paris" ou "papa"
- La suite .*
retrouve n'importe quelle série de caractère
Ex. "p.*" pourra retourner "période" ou "papa" ou "paris"
Retrouver un nombre fini de motif
Il est possible avec les expressions régulières de retrouverdes motifs apparaissant un nombre limité de fois dans la chaine spécifiée.
On utilise pour cela les caractères spéciaux { }
- "x{2,3}" retrouve une chaine contenant au moins une séquence de 2 "x" et au plus 3 "x"
- "x{2,}" retrouve une chaine de caractère contenant au moins une séquence de 2 "x" ou plus
- "a.{2}eler" retrouve une chaine contenant une séquence de 2 caracères identiques (ex. "appeler")
- {n} Le caractère apparaît exactement n fois.
- {n,} Le caractère apparaît au moins n fois.
- {m,n} Le caractère apparaît au moins m fois, mais pas plus de n fois.
La position des caractères
Il est possible de retrouver tous les motifs situés en début ou fin de la chaine spécifiée.
Exemple :
"^Clermont" retrouve toutes les chaînes commencant pas Clermont
et
"Clermont$" retrouve toutes les chaînes finissant par Clermont
Tableau récapitulant les motifs des Expressions Régulières : norme POSIX 1003.2
| Séquence |
Signification |
| [[:alnum:]] - [A-Za-z0-9] |
Caractères alphanumériques |
| [[:alpha:]] - [A-Za-z] |
Caractères alphabétiques |
| [[:digit:]]- [0-9] |
Caractères numériques |
| [[:blank:]] -[ \x09] |
Espaces ou tabulations |
| [[:xdigit:]] -[0-9a-fA-F] |
Caractères héxadécimaux |
| [[:graph:]] -[!~~] |
Caractères affichables et imprimables |
| [[:lower:]] - [a-z] |
Caractères en minuscules |
| [[:upper:]] - [A-Z] |
Caractères en majuscules |
| [[:punct:]] -[!-/:-@[-'{-~] |
Caractères de ponctuation |
| [[:space:]] - [ \t\ v \f] |
Tout type d'espace |
| [[:cntrl:]] - [\x00-\x19\x7F] |
Caractères d'échappement |
| [[:print:]] - [~~] |
Caractères imprimables, excepté les caractères de contrôle |