lundi 4 novembre 2013

Perl, expressions régulières


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