Différences entre les versions de « Regexp »
(34 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 6 : | Ligne 6 : | ||
=== Métacaractères === | === Métacaractères === | ||
− | Un métacaractère est un symbole d'une expression régulière qui remplit une fonction précise. Quelques exemples d'application suivent ce tableau. | + | 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. |
Ligne 14 : | Ligne 14 : | ||
|- | |- | ||
!? | !? | ||
− | | | + | |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} | ||
− | | | + | |<tt>n</tt> fois l’expression précédente |
|- | |- | ||
− | !{n | + | !{m,n} |
− | | | + | |<tt>m</tt> fois minimum et <tt>n</tt> fois maximum l’expression précédente |
|- | |- | ||
!^ | !^ | ||
− | |Négation ou début de ligne | + | |Négation ou début de ligne |
|- | |- | ||
!$ | !$ | ||
− | |Fin 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 |
|- | |- | ||
! <nowiki>|</nowiki> | ! <nowiki>|</nowiki> | ||
− | |Opérateur ou. | + | |Opérateur « ou ». |
|- | |- | ||
|} | |} | ||
− | '''N.B. :''' Pour que « <tt>*</tt> » ne soit pas interprété comme un métacaractère, il faut plutôt utiliser « <tt>\*</tt> | + | '''N.B. :''' Pour que « <tt>*</tt> » ne soit pas interprété comme un métacaractère, il faut plutôt utiliser « <tt>\*</tt> ». |
==== Exemples ==== | ==== Exemples ==== | ||
− | + | Dans les exemples ci-dessous, chaque expression régulière est suivie de la chaîne de caractères qu'elle représente. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * <tt>abc?</tt> : <tt>ab</tt> ou <tt>abc</tt>. | |
− | + | * <tt>abc*</tt> : <tt>ab</tt>, <tt>abc</tt>, <tt>abcc</tt>, ... | |
+ | * <tt>abc+</tt> : <tt>abc</tt>, <tt>abcc</tt>, <tt>abccc</tt>, ... | ||
+ | * <tt>abc{2}</tt> : <tt>abcc</tt>. | ||
+ | * <tt>abc{2,}</tt> : <tt>abcc</tt>, <tt>abccc</tt>, ... | ||
+ | * <tt>abc{2,4}</tt> : <tt>abcc</tt>, <tt>abccc</tt>, <tt>abcccc</tt>. | ||
+ | * <tt>^début</tt> : chaîne commençant par « <tt>début</tt> ». | ||
+ | * <tt>fin$</tt> : chaîne se terminant par « <tt>fin</tt> ». | ||
+ | * <tt>[abc]</tt> : <tt>a</tt>, <tt>b</tt> ou <tt>c</tt>; équivalent à <tt>(a|b|c)</tt>. | ||
+ | * <tt>[a-z]</tt> : une des lettres de [http://fr.wikipedia.org/wiki/Alphabet l'alphabet]. | ||
+ | * <tt>[a-zA-Z]</tt> : union de <tt>[a-z]</tt> et <tt>[A-Z]</tt>. | ||
+ | * <tt>a(bc)*</tt> : <tt>a</tt>, <tt>abc</tt>, <tt>abcbc</tt>, ... | ||
+ | * <tt>un|le</tt> : « <tt>un</tt> » ou « <tt>le</tt> ». | ||
+ | * <tt>(un|le) chien</tt> : « <tt>un chien</tt> » ou « <tt>le chien</tt> ». | ||
+ | * <tt>^abc+</tt> : <tt>abc</tt>, <tt>abcc</tt>, <tt>abccc</tt>, ... | ||
+ | * <tt>^chaîne$</tt> : chaîne qui commence et se termine par « <tt>chaîne</tt> ». | ||
+ | * <tt>(a|b)*</tt> : chaîne contenant une suite de <tt>a</tt> ou de <tt>b</tt>. | ||
+ | * <tt>^.{3}$</tt> : chaîne de 3 caractères exactement. | ||
+ | === Combinaison avec [[La_commande_grep|<tt>grep</tt>]] === | ||
+ | * Recherche de « <tt>smu</tt> » au début de chaque ligne dans <tt>fichier</tt> : | ||
+ | <pre> | ||
+ | grep "^smu" fichier | ||
+ | </pre> | ||
+ | * Retourne les lignes commençant par « <tt>^s</tt> » dans <tt>fichier</tt> : | ||
+ | <pre> | ||
+ | grep "\^s" fichier | ||
+ | </pre> | ||
+ | * Affiche les lignes contenant « <tt>Smu</tt> » ou « <tt>smu</tt> » dans <tt>fichier</tt> : | ||
+ | <pre> | ||
+ | grep "[Ss]mu" fichier | ||
+ | </pre> | ||
+ | * Recherche les lignes vides dans <tt>fichier</tt> : | ||
+ | <pre> | ||
+ | grep "^$" fichier | ||
+ | </pre> | ||
+ | * Recherche les lignes contenant 2 chiffres côte à côte dans <tt>fichier</tt> : | ||
+ | <pre> | ||
+ | grep "[0-9][0-9]" fichier | ||
+ | </pre> | ||
− | + | === Recherche de fichiers === | |
− | + | Pour chercher des fichiers dont le nom satisfait à une expression régulière, il suffit de combiner les commandes [[La_commande_grep|<tt>grep</tt>]] et [[Commandes_élémentaires#ls|<tt>ls</tt>]] à l'aide d'un [[Pipelining_et_redirection|pipeline]] (« | »). Par exemple, pour énumérer les fichiers du répertoire courant dont le nom est <tt>abc</tt>, <tt>abcbc</tt>, <tt>abcbcbc</tt>, etc., il suffit d'utiliser la ligne suivante : | |
− | + | <pre> | |
− | + | ls -R | grep -E "a(bc)+" | |
− | + | </pre> | |
− | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | <pre | ||
− | |||
− | |||
− | |||
− | |||
− | |||
== Voir aussi == | == Voir aussi == | ||
Ligne 111 : | Ligne 103 : | ||
* [[Commandes_élémentaires|Commandes élémentaires]] | * [[Commandes_élémentaires|Commandes élémentaires]] | ||
− | * [[ | + | * [[Commandes_élémentaires#ls|<tt>ls</tt>]] |
* [[La_commande_grep|<tt>grep</tt>]] | * [[La_commande_grep|<tt>grep</tt>]] | ||
− | * [[ | + | * [[Pipelining_et_redirection|Pipeline]] |
+ | * [[La_commande_sed|<tt>sed</tt>]] | ||
+ | |||
+ | === Références externes === | ||
+ | |||
+ | * [http://en.wikipedia.org/wiki/Regular_expression ''Regular expression'' sur Wikipedia] |
Version actuelle datée du 28 mai 2013 à 10:46
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 « \* ».
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 « fin ».
- [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
- Recherche de « smu » au début de chaque ligne dans fichier :
grep "^smu" fichier
- Retourne les lignes commençant par « ^s » dans fichier :
grep "\^s" fichier
- Affiche les lignes contenant « Smu » ou « smu » dans fichier :
grep "[Ss]mu" fichier
- Recherche les lignes vides dans fichier :
grep "^$" fichier
- Recherche les lignes contenant 2 chiffres côte à côte dans fichier :
grep "[0-9][0-9]" fichier
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)+"