Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:programmation:shells:bash-vii-globs-etendus-regex [09/07/2014 11:26] Hypathie [Correspondance de motifs avec les globs étendus] |
doc:programmation:shells:bash-vii-globs-etendus-regex [09/07/2014 11:45] Hypathie [Correspondance de motifs avec les expressions rationnelles] |
||
---|---|---|---|
Ligne 159: | Ligne 159: | ||
Voici quelques liens qui présentent la syntaxe et les caractères utilisables avec Bash (sans les commandes ''grep'', ''sed'', ''awk'').\\ | Voici quelques liens qui présentent la syntaxe et les caractères utilisables avec Bash (sans les commandes ''grep'', ''sed'', ''awk'').\\ | ||
* [[http://mywiki.wooledge.org/RegularExpression]]\\ | * [[http://mywiki.wooledge.org/RegularExpression]]\\ | ||
- | * [[https://en.wikipedia.org/wiki/Regular_expression#Standards]]\\ | + | |
<note> | <note> | ||
Ligne 172: | Ligne 172: | ||
**Voici les caractères utilisables :** | **Voici les caractères utilisables :** | ||
^ "signes" regex ERE basique ^ signification (comparez avec le tableau de l'index) ^ | ^ "signes" regex ERE basique ^ signification (comparez avec le tableau de l'index) ^ | ||
- | | ''.'' | Correspond à tout caractère unique. Dans expressions POSIX entre crochets, le caractère point correspond à un point littéral | | + | | ''.'' | Correspond à tout caractère unique. | |
- | | ''[ ]'' | Correspond à un seul caractère qui est contenue dans les parenthèses. On peut mélanger [abcx-z] correspond à "a", "b", "c", "x", "y" ou "z", de même que [a-cx-z]. Le caractère - est traité comme un caractère littéral si c'est le dernier ou le premier. | | + | | ''[ ]'' | Correspond à un seul caractère qui est contenue dans ''[ ]''. On peut mélanger [abcx-z] correspond à ''a'', ''b'', ''c'', ''x'', ''y'' ou ''z'', de même que ''[a-cx-z]''. Le caractère ''-'' est traité comme un caractère littéral si c'est le dernier ou le premier. | |
- | | ''[^ ]'' | Correspond à un seul caractère qui n'est pas contenu dans les parenthèses. Par exemple, ''[^ abc]'' correspond à tout caractère autre que "a", "b" ou "c". | | + | | ''[^ ]'' | Correspond à un caractère qui n'est pas contenu dans les parenthèses. Par exemple, ''[^abc]'' correspond à tout caractère autre que a, b ou c. | |
| ''^ '' | Correspond à la position de départ dans la chaîne. | | | ''^ '' | Correspond à la position de départ dans la chaîne. | | ||
| ''$'' | Correspond à la position de fin de la chaîne ou la position juste avant un saut de ligne de chaîne interminable. | | | ''$'' | Correspond à la position de fin de la chaîne ou la position juste avant un saut de ligne de chaîne interminable. | | ||
- | | ''( )'' | Définit une sous-expression marquée. La chaîne correspondante entre parenthèses peut être rappelé plus tard (voir l'entrée suivante, \ n). Une sous-expression marquée est aussi appelé un groupe de blocs ou de capturer. Mode BRE nécessite \ (\). | | + | | ''( )'' | Définit une sous-expression marquée. La chaîne correspondante entre parenthèses peut être rappelé plus tard (voir l'entrée suivante, ''\ n''). Une sous-expression marquée est aussi appelé un groupe de blocs ou de capturer. Mode BRE nécessite \ (\). | |
- | | ''\n'' | Correspond au nombre n de sous-chaîne, où n est un chiffre de 1 à 9.\\ Écriture équivalente à {n} | | + | | ''\n'' | Correspond au nombre ''n'' de sous-chaîne, où ''n'' est un chiffre de 1 à 9.\\ Écriture équivalente à ''{n}'' | |
| ''*'' | Correspond à zéro ou plusieurs fois l'élément précédent.\\ Par exemple, ''ab * c'' correspond à "ac", "abc", "abbbc», etc. Ou encore, ''[xyz] *'' correspond à " ", "x", "y", "z", "zx", "zyx", "xyzzy ", et ainsi de suite. ''(ab) *'' correspond à "", "b", "abab", "ababab", et ainsi de suite. | | | ''*'' | Correspond à zéro ou plusieurs fois l'élément précédent.\\ Par exemple, ''ab * c'' correspond à "ac", "abc", "abbbc», etc. Ou encore, ''[xyz] *'' correspond à " ", "x", "y", "z", "zx", "zyx", "xyzzy ", et ainsi de suite. ''(ab) *'' correspond à "", "b", "abab", "ababab", et ainsi de suite. | | ||
- | | ''{m,n}'' | Correspond au moins à m fois mais pas plus de n fois l'élément précédent.\\ Par exemple, ''a{3,5}'' correspond uniquement "aaa", ou "aaaa", ou "aaaaa". | | + | | ''{m,n}'' | Correspond au moins à m fois mais pas plus de n fois l'élément précédent.\\ Par exemple, ''a{3,5}'' correspond uniquement ''aaa'', ou ''aaaa'', ou ''aaaaa''. | |
- | | ''{ }'' | "exactement trois fois" par exemple ''a{3}'' correspond aaa seulement. (équivalent de aaa d'expression) | | + | | ''{ }'' | "exactement trois fois" par exemple ''a{3}'' correspond strictement à ''aaa'' . | |
| ''{n,}'' | "jusqu'à trois fois". «trois fois ou plus». Par exemple, ''{3,}'' correspond aaa ou aaaa, etc. (équivalent de ''a*'') | | | ''{n,}'' | "jusqu'à trois fois". «trois fois ou plus». Par exemple, ''{3,}'' correspond aaa ou aaaa, etc. (équivalent de ''a*'') | | ||
| ''{,n}'' | ''a{,3}'' "jusqu'à trois fois". Correspond à la chaîne vide ou a ou aa ou aaa (équivalent de ''| a | aa | aaa''.| | | ''{,n}'' | ''a{,3}'' "jusqu'à trois fois". Correspond à la chaîne vide ou a ou aa ou aaa (équivalent de ''| a | aa | aaa''.| | ||
|POSIX extended | Bash avec correctif, sinon il faut \ devant parenthèse et crochet. ''\( \)'' et ''\{ \}'' | | |POSIX extended | Bash avec correctif, sinon il faut \ devant parenthèse et crochet. ''\( \)'' et ''\{ \}'' | | ||
|autres caractères | signification | | |autres caractères | signification | | ||
- | | ''?'' | Correspond zéro ou une fois à l'élément précédent. Par exemple, ab? c correspond seulement "ac" ou "abc". | | + | | ''?'' | Correspond zéro ou une fois à l'élément précédent. Par exemple, ''ab? c'' correspond seulement ''ac'' ou ''abc''. | |
- | | ''+'' | Correspond une ou plusieurs fois à l'élément précédent. Par exemple, ab + c correspond à "abc", "abbc", "abbbc", et ainsi de suite, mais pas "ac". | | + | | ''+'' | Correspond une ou plusieurs fois à l'élément précédent. Par exemple, ''ab + c'' correspond à ''abc'', ''abbc'', ''abbbc'', et ainsi de suite, mais pas "ac". | |
- | | ''|'' | Correspond à l'expression d'avant OU l'expression d'après l'opérateur. Par exemple, ''abc|def'' correspond à "abc" ou "def". | | + | | ''|'' | Correspond à l'expression d'avant OU l'expression d'après l'opérateur. Par exemple, ''abc|def'' correspond à ''abc'' ou ''def''. | |
- | | Et tous les caractères de [[doc:programmation:shell:regexp#les-ensembles-de-caracteres-possibles|les classes prédéfinies]]. |''[:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] [:punct:] [:space:] [:upper:] [:xdigit:]'' | | + | | Et toutes [[doc:programmation:shell:regexp#les-ensembles-de-caracteres-possibles|les classes prédéfinies]]. |''[:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] [:punct:] [:space:] [:upper:] [:xdigit:]'' | |
+ | * Référence : [[https://en.wikipedia.org/wiki/Regular_expression#Standards]] | ||
==== Apprenons à construire une expression régulière==== | ==== Apprenons à construire une expression régulière==== | ||
Ligne 286: | Ligne 287: | ||
====Un script pour s'exercer au ER==== | ====Un script pour s'exercer au ER==== | ||
- | Voici un script "exp.reg1" ; il a pour but de s'exercer aux expressions régulières.\\ | + | * Voici un script "exp.reg1" |
<code bash> | <code bash> | ||
Ligne 331: | Ligne 332: | ||
# ligne 33 (if) : $? (code de retour) -eq (égal à) zéro (pas d'erreur de sortie, donc bonne correspondance) | # ligne 33 (if) : $? (code de retour) -eq (égal à) zéro (pas d'erreur de sortie, donc bonne correspondance) | ||
</code> | </code> | ||
- | Lancez-le comme ci-dessous, explications détaillées dans le retour :\\ | + | * Lancez-le comme ci-dessous, explications détaillées dans le retour :\\ |
<code user> | <code user> |