Différences entre les versions de « Regexp »

Ligne 69 : Ligne 69 :
 
* <tt>(a|b)*</tt>&nbsp;: chaîne contenant une suite de <tt>a</tt> ou de <tt>b</tt>.
 
* <tt>(a|b)*</tt>&nbsp;: chaîne contenant une suite de <tt>a</tt> ou de <tt>b</tt>.
 
* <tt>^.{3}$</tt>&nbsp;: chaîne de 3 caractères exactement.
 
* <tt>^.{3}$</tt>&nbsp;: chaîne de 3 caractères exactement.
 
=== Classes et blocs de caractères ===
 
Une classe est définie en spécifiant, entre crochets &laquo;&nbsp;[ ]&nbsp;&raquo;, les caractères en faisant partie. L'utilisation de [[Regexp#Métacaractères|métacaractères]] est autorisée.
 
 
 
{| class="wikitable"  style="margin: auto; text-align: left;"
 
|-
 
! Classe !! Signification
 
|-
 
![abc]
 
|Les caractères <tt>a</tt>, <tt>b</tt> et <tt>c</tt>.
 
|-
 
![a-z]
 
|Toutes les lettres de [http://fr.wikipedia.org/wiki/Alphabet l'alphabet].
 
|-
 
![^abc]
 
|Toutes les lettres de l'alphabet, sauf <tt>a</tt>, <tt>b</tt> et <tt>c</tt>.
 
|-
 
![a-zA-Z]
 
|L'union des classes <tt>[a-z]</tt> et <tt>[A-Z]</tt>.
 
|-
 
|}
 
 
==== Exemples ====
 
* [abc]: chaîne qui contient un a, un b, ou un c.
 
* [a-z]: chaîne qui contient un caractère compris entre a et z.
 
* ^[a-zA-Z]: chaîne qui commence par une lettre minuscule ou majuscule.
 
* ^[^a-zA-Z]: chaîne qui ne commence pas par une lettre.
 
* [\+?{}.]: chaîne qui contient un de ces six caractères : \+?{}.
 
  
 
=== Combinaison avec [[La_commande_grep|<tt>grep</tt>]] ===
 
=== Combinaison avec [[La_commande_grep|<tt>grep</tt>]] ===
Ligne 104 : Ligne 75 :
 
</pre>
 
</pre>
 
cherche 'smu' au début de chaque ligne dans file.
 
cherche 'smu' au début de chaque ligne dans file.
<pre>
 
grep 'smu$' file</pre>
 
cherche 'smu' à la fin de chaque ligne dans file.
 
<pre>
 
grep '^smu$' file
 
</pre>retourne les lignes contenant seulement et exactement 'smu'.
 
 
<pre>
 
<pre>
 
grep '\^s' file
 
grep '\^s' file
 
</pre>
 
</pre>
retourne les lignes commençant par '^s',car "\" permet de considérer ^ comme un caractère normal et non plus un méta-caractère.
+
retourne les lignes commençant par '^s'.
 
<pre>
 
<pre>
 
grep '[Ss]mu' file
 
grep '[Ss]mu' file
 
</pre>
 
</pre>
 
affiche les lignes contenant 'Smu' ou 'smu'.
 
affiche les lignes contenant 'Smu' ou 'smu'.
<pre>
 
grep 'B[oO][bB]' file
 
</pre> affiche les lignes contenant BOB, Bob, BOb or BoB.
 
 
<pre>
 
<pre>
 
grep '^$' file
 
grep '^$' file

Version du 16 mai 2013 à 15:15

Dans le jargon informatique, une expression régulière, ou Regexp, est une chaîne de caractères désignant un ensemble de chaînes de caractères respectant une syntaxe particulière. Elle est très utile dans la manipulation de texte, pour rechercher, remplacer ou supprimer des expressions rencontrées fréquemment.


Métacaractères

Un métacaractère est un symbole faisant partie d'une expression régulière et qui remplit une fonction précise. Quelques exemples d'application suivent ce tableau.


Métacaractères Fonction
? 0 ou 1 fois l'expression précédente
* 0, 1 ou plusieurs fois l'expression précédente
+ 1 ou plusieurs fois l'expression précédente
{n} n fois l’expression précédente
{m,n} m fois minimum et n fois maximum l’expression précédente
^ Négation ou début de ligne
$ Fin de ligne
[] Un ou plusieurs des objets entre crochets doivent être présents
() Tous les objets entre parenthèses doivent être présents
| Opérateur « ou ».


N.B. : Pour que « * » ne soit pas interprété comme un métacaractère, il faut plutôt utiliser « \* » ou « [*] ».

Exemples

Dans les exemples ci-dessous, chaque expression régulière est suivie de la chaîne de caractères qu'elle représente.

  • abc? : ab ou abc.
  • abc* : ab, abc, abcc, ...
  • abc+ : abc, abcc, abccc, ...
  • abc{2} : abcc.
  • abc{2,} : abcc, abccc, ...
  • abc{2,4} : abcc, abccc, abcccc.
  • ^début : chaîne commençant par « début ».
  • fin$ : chaîne se terminant par « début ».
  • [abc] : a, b ou c; équivalent à (a|b|c).
  • [a-z] : une des lettres de l'alphabet.
  • [a-zA-Z] : union de [a-z] et [A-Z].
  • a(bc)* : a, abc, abcbc, ...
  • un|le : « un » ou « le ».
  • (un|le) chien : « un chien » ou « le chien ».
  • ^abc+ : abc, abcc, abccc, ...
  • ^chaîne$ : chaîne qui commence et se termine par « chaîne ».
  • (a|b)* : chaîne contenant une suite de a ou de b.
  • ^.{3}$ : chaîne de 3 caractères exactement.

Combinaison avec grep

grep '^smu' file

cherche 'smu' au début de chaque ligne dans file.

grep '\^s' file

retourne les lignes commençant par '^s'.

grep '[Ss]mu' file

affiche les lignes contenant 'Smu' ou 'smu'.

grep '^$' file

recherche les lignes vides dans file.

grep '[0-9][0-9]' file

recherche les lignes contenant 2 chiffres côte à côte.

Recherche de fichiers

Pour chercher des fichiers dont le nom satisfait à une expression régulière, il suffit de combiner les commandes grep et ls à l'aide d'un pipeline (« | »). Par exemple, pour énumérer les fichiers du répertoire courant dont le nom est abc, abcbc, abcbcbc, etc., il suffit d'utiliser la ligne suivante :

ls -R | grep -E "a(bc)+"

Voir aussi

Articles connexes

Références externes


La dernière modification de cette page a été faite le 16 mai 2013 à 15:15.