Les expressions régulières :
Elles servent à écrire de manière générique des chaînes de caractères qui ont des caractéristiques communes.
Comment peut-on écrire une url ? une date ? Elles permettent de décrire de manière concise des classes de chaînes de caractères. Cela passe par le repérage de motifs ou patron. Cela nous sert à localiser les zones qui nous intéressent. Cependant il est parfois difficile de définir le modèle.
\bmot\b
\bbiocarburant(s)\b
Les meilleurs outils de travail sur les données textuelles intègrent l’utilisation des expressions régulières. cependant la syntaxe des exp. régulières peut varier dans certains outils mais la syntaxe peut varier, mais le principe est touours le même.
Comment décrire des motifs d’expressions régulières ?
Ces motifs sont utiles pour chercher les chaînes de caractères qui nous intéresse. Il y a des caractères simples et aussi des caractères spéciaux (opérateurs).
. \ ^$ | () []
En général, les motifs sont assez complexes.
Les opérateurs complémentaires :
[…] signifie ensemble de caractères. ce qui est entre crochets correspond à 1 caractère.
r[iau]g => ring, rang, rung
Chaîne de caractères alternatifs :
|
Exemple : in (any|every) => in any, in every
Les intervalles :
on vise un caractère compris dans l’intervalle entre crochets :
[0-9] => (0,1,2,3,4,5,6)
La négation d’un ensemble de caractères :
[^…] porte une négatin sur les éléments constitutifs de l’ensemble situé entre crochets.
supprimer une balise HTML : <[^<>]> supprime tout ce qui est entre chevrons « supprime toutes chaînes de caractères qui est tout sauf des chevrons »
avec sed on lui donne substitute, il le remplace par rien.
sed -e « s/<[^<>]>// »
Les quantificateurs :
? signifie que le caractère qui précède est optionnel
arbres? => arbre; arbres
interest (s|(ed|ing)(ly)?)? => interest, interests, intersted, interestingly
* remplace n’importe quoi
+ => as [a-z]+ as => au moins une occurrence
marquer des répétitions {}
Le point peut marquer n’importe quel caractère sauf le retour à la ligne.
Les opérateurs de frontières :
^ => début de chaîne
$=> fin de chaîne
\w => caractère de mot, n’importe quel caractère alpha-numérique ; \b\w+\b : permet de reconnaître beaucoup de mots, mais pas tous (pas les mots accentués par exemple)
\W => n’importe quel caractère non caractère de mot
\b => frontière d’un mot à gauche ou à droite
Le parenthésage :
Le parenthésage permet de construire des expressions complexes. La femeture est plus forte que la concaténation qui est plus forte que l’union.
* : caractère de fermeture qui s’applique à ce qui précède.
a|b(c*)d devient ((a| ((b(c*))d))
\ : déspécialise le caractère qui le suit.
voir le man de « egrep » qui présente des carctère d’expressions régulières intéressants.
Voir les opérateurs de Regex.
La commande egrep
filtrage de lignes dans un fichier qui correspond à des lignes et affichage des lignes concernées.
Options egrep : voir manuel
-l : ne pas tenir en compte majuscule et minuscule
-o : affiche toutes les occurrences reconnues du motif
-v : afficher les lignes qui ne contiennent pas les lignes vides.
Supprimer les lignes vides dans un fichier et de le mettre dans un fichier, le même fichier sans lignes vides.
egrep -v » ^$ » toto.txt >totosansligne.txt
Par défaut egrep affiche la ligne contenant le motif . -o cherche le motif et affiche uniquement la chaîne de caractères reconnu, si il y a plusieurs fois le motif sur une même ligne il sera affiché plusieur fois.
egrep-o « \bcitoy\w+ » => afficher tous les mots qui commencent par citoy dans le fichier.
|sort-u => affiche les différentes formes du mot « citoyen, citoyens, citoyennes, citoyennes »
On peut faire une demande de requête élargie avec egrep.