EXPRESSIONS
RÉGULIÈRES, POUR RECHERCHER DANS UN TEXTE
ET PRODUIRE UN CERTAIN RÉSULTAT
Détection
- Une
expression régulière est composée d'un motif qui est l'objet chaîne de
caractères à détecter.
- Pour signaler un motif avec Perl, on
l'encadre par deux slashs. / /
exemple :
#!/usr/bin/perl;
@ARGV =
("Entree.txt");
while (<>) {
if (/aaa/) {
-- Permet de détecter "aaa" dans le
texte en entrée.
- L'astérisque est un facteur multiplicatif :
placé derrière un élément, il indique que cet
élément peut se trouver de 0 à x fois x quelconque.
exemple :
ab*a
reconnaîtra
aa
aba
abba
ab....ba
Le "+" excepte 0.
Le "?" comprend 0 ou 1 fois.
On peut aussi préciser un certain nombre de
foise entre accolades.
exemple :
ab{2,3}a
-- Identifie les chaînes "abba" et
"abbba".
- Le point . est un joker : il peut
représenter n'importe quel caractère à l'exception du retour chariot "\n".
- Les crochets [] permettent de définir un
ensemble de cartactères. On insère les caractères de l'ensemble à représenter à
l'intérieur.
exemple :
[az] dénote l'ensemble {a,z}.
Notez que le tiret - permet de définir un
intervalle donc un certain ensemble.
exemple :
[a-z] dénote l'ensemble {a, ... , z}
Classes prédéfinies avec Perl et
particulièrement intéréssantes pour notre projet...
\D tout sauf un chiffre
\w tout sauf les
caractères spéciaux.
Modification
Quand on a trouvé notre cible, on peut vouloir
la modifier.
- Substituer avec 's' placé devant le motif à
détecter, plus le motif nouveau.
exemple :
#!/usr/bin/perl;
@ARGV = ("Entree.txt");
while (<>) {
if (s/ab*b/XXXX/) {
-- Recherche la chaîne "ab{x fois, x
quelconque}" dans le fichier texte "Entree.txt" et la remplace
par "XXXX".
Aucun commentaire:
Enregistrer un commentaire