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:59] Hypathie [Correspondance de motifs avec les expressions rationnelles] |
doc:programmation:shells:bash-vii-globs-etendus-regex [09/07/2014 13:03] Hypathie [INDEX] |
||
---|---|---|---|
Ligne 156: | Ligne 156: | ||
* de vérifier la correspondre entre une chaîne (valeur d'une variable à gauche) et le modèle regex à droite ; | * de vérifier la correspondre entre une chaîne (valeur d'une variable à gauche) et le modèle regex à droite ; | ||
* ou encore de vérifier la correspondance entre une variable (constituée d'une chaîne de caractères littérales), et une variable constituée d'une regex. | * ou encore de vérifier la correspondance entre une variable (constituée d'une chaîne de caractères littérales), et une variable constituée d'une regex. | ||
- | |||
- | 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]]\\ | ||
- | |||
<note> | <note> | ||
Ligne 191: | Ligne 187: | ||
| 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:]'' | | | 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 : | + | * Référence (ce tableau résume le contenu de ces trois liens) : |
* [[https://en.wikipedia.org/wiki/Regular_expression#Standards]] | * [[https://en.wikipedia.org/wiki/Regular_expression#Standards]] | ||
* [[https://en.wikipedia.org/wiki/Regular_expression#Standards#Uses]] | * [[https://en.wikipedia.org/wiki/Regular_expression#Standards#Uses]] | ||
* [[https://en.wikipedia.org/wiki/Regular_expression#Standards#Character%20classes]] | * [[https://en.wikipedia.org/wiki/Regular_expression#Standards#Character%20classes]] | ||
+ | * Autre référence : [[http://mywiki.wooledge.org/RegularExpression]] | ||
==== Apprenons à construire une expression régulière==== | ==== Apprenons à construire une expression régulière==== | ||
Ligne 345: | Ligne 342: | ||
**Un grand merci à captnfab pour conseils avisés et toutes ses corrections.** | **Un grand merci à captnfab pour conseils avisés et toutes ses corrections.** | ||
- | =====INDEX ===== | + | =====INDEX 1===== |
- | ====1) rappel des principaux caractères des expressions rationnelles ==== | + | ==== Rappel des principaux caractères des expressions rationnelles ==== |
- | Avec grep, sed, awk, perl\\ | + | Un petit rappel non exhaustif des caractères spéciaux relatifs aux expressions rationnelles communs à ''grep'', ''sed'', ''awk'', ''perl''.\\ |
Pour une initiation aux expressions régulières ou rationnelles, voir :\\ | Pour une initiation aux expressions régulières ou rationnelles, voir :\\ | ||
- | http://www.unixmail.fr/une-initiation-aux-expressions-rationnelles/\\ | + | * http://www.unixmail.fr/une-initiation-aux-expressions-rationnelles/\\ |
- | http://http://culot.org/public/Docs/regexp.html\\ | + | * http://http://culot.org/public/Docs/regexp.html\\ |
- | Un petit rappel non exhaustif des caractères spéciaux relatifs aux expressions rationnelles : | + | ^ ^ ^ |
+ | |Correspondance : | ''m/motif/''\\ ''/motif/'' | | ||
+ | |Substitution : | ''s/motif/chaîne/'' | | ||
+ | |Correspondance entre regex et variable : | '' =~ ''\\ $v =~ m/toto/\\ $v =~ s/toto/titi/ | | ||
+ | |Les caractères spéciaux : | ''\'' ''|'' ''( )'' ''[ ]'' ''{ }'' ''^'' ''$'' ''*'' ''+'' ''?'' ''.'' | | ||
+ | |Pour représenter saut de ligne : | ''\n'' | | ||
+ | |Pour représenter retour chariot : | ''\r'' | | ||
+ | |Pour représenter tabulation : | ''\t'' | | ||
+ | |Pour représenter saut de page : | '' \f''| | ||
+ | |Pour représenter échappement : | ''\e'' | | ||
+ | |Le point représente n'importe quel caractère. | ''.'' | | ||
+ | |La paire de crochet "matche" l'un des caractères entre crochet | ''[ ]'' | | ||
+ | |Intervalle :\\ '' ''\\ Tout intervalle est envisageable,\\ par exemple ''u-w'' ou toute autre combinaison tant que\\ le numéro ''ASCII'' du premier caractère est inférieur à celui du second.\\ Un intervalle peut prendre place au milieu d'un motif quelconque.\\ Pour rechercher un ''-'' littéral, le mettre en dernier dans un intervalle. | \\ '' ''\\ '' ''\\ ''[a-z]'' (l'une des lettres minuscules de l'alphabet)\\ ''[A-Z]'' (l'une des lettres majuscules de l'alphabet)\\ ''[0-9]'' (un des caractères numériques) | | ||
+ | |Raccourcis pour des ensembles courants\\ | ''\d'' qui correspond à ''[0-9]''\\ ''\D'' qui correspond à ''[cfl0-9]''\\ ''\w'' qui correspond à ''[a-zA-Z0-9_]''\\ ''\W'' qui correspond à ''[cfla-zA-Z0-9_]''\\ ''\t'' qui correspond à une tabulation\\ ''\n'' qui correspond à un saut de ligne\\ ''\n'' qui correspond à un saut de ligne\\ ''\r'' qui correspond à un retour chariot\\ ''\s'' qui correspond à un espace blanc\\ ''\S'' qui correspond à n'est pas un espace blanc | | ||
+ | |Quantificateurs :\\ '' ''\\ 0 fois ou plus\\ 1 fois ou plus\\ 0 ou 1 fois\\ n fois exactement | '' ''\\ '' ''\\ ''*''\\ ''+''\\ ''?''\\ ''{n}'' | | ||
+ | |Mémorisation : \\ de variables $1 $2 ...| ''( )'' ''( )'' ... | | ||
+ | |Exemple:\\ '' ''\\ ''prenom.nom@domaine.ext''\\ (\w+) : $1\\ (\w+) : $2 | \\ '' ''\\ ''/\b(\w+)\.(\w+)@\w+\.w{2,4}\b/'' | | ||
+ | |Substitution de variables : | ''$s = "toto";''\\ ''if( $v =~ m/$s/ ) { ... }'' | | ||
+ | |Options : | ''i'' : Rend le motif insensible à la case (minuscules/majuscules)\\ '' '' l'expression régulière ''m/toto/i''\\ ''g'' : Permet d'effectuer toutes les substitutions,\\ '' '' et pas que la première.\\ ''e'' : Évalue le membre de droite comme une expression Perl.\\ ''o'' : La compilation a lieu une seule fois lors de la première exécution. | | ||
- | <code> | ||
- | Syntaxe correspondance : m/motif/ ou /motif/ | ||
- | Syntaxe substitution : s/motif/chaîne/ | ||
- | Lier une variable à une regex : =~ | ||
- | $v =~ m/toto/ | ||
- | $v =~ s/toto/titi/ | ||
- | Les caractères spéciaux : \ | ( ) [ ] { } ^ $ * + ? . | ||
- | |||
- | pour représenter saut de ligne : \n | ||
- | pour représenter retour chariot : \r | ||
- | pour représenter tabulation : \t | ||
- | pour représenter saut de page : \f | ||
- | pour représenter échappement : \e | ||
- | |||
- | Le point : . n'importe quel caractère | ||
- | |||
- | La paire de crochet : [ ] matche l'un des caractères entre crochet | ||
- | |||
- | Intervalle : [a-z] l'une des lettres minuscules de l'alphabet | ||
- | : [A-Z] l'une des lettres majusculs de l'alphabet | ||
- | : [0-9] un des caractères numériques | ||
- | Tout intervalle est envisageable, | ||
- | par exemple u-w ou toute autre combinaison tant que | ||
- | le numéro ASCII du premier caractère est inférieur à celui du second. | ||
- | |||
- | Un intervalle peut prendre place au milieu d'un motif quelconque. | ||
- | |||
- | Pour rechercher un - littéral, le mettre en dernier dans un intervalle. | ||
- | |||
- | Raccourcis pour des ensembles courants : | ||
- | (motifs abrégés) : \d qui correspond à [0-9] | ||
- | : \D qui correspond à [cfl0-9] | ||
- | : \w qui correspond à [a-zA-Z0-9_] | ||
- | : \W qui correspond à [cfla-zA-Z0-9_] | ||
- | : \t qui correspond à une tabulation | ||
- | : \n qui correspond à un saut de ligne | ||
- | : \n qui correspond à un saut de ligne | ||
- | : \r qui correspond à un retour chariot | ||
- | : \s qui correspond à un espace blanc | ||
- | : \S qui correspond à N’EST PAS un espace blanc | ||
- | |||
- | Quantificateurs | ||
- | 0 fois ou plus : * | ||
- | 1 fois ou plus : + | ||
- | 0 ou 1 fois : ? | ||
- | n fois exactement : {n} | ||
- | |||
- | Mémorisation : ( ) ( ) | ||
- | ^ ^ | ||
- | : $1 $2 | ||
- | | ||
- | : prenom.nom@domaine.ext | ||
- | : /\b(\w+)\.(\w+)@\w+\.w{2,4}\b/ | ||
- | : $1 $2 | ||
- | |||
- | Substitution de variables : $s = "toto"; | ||
- | : if( $v =~ m/$s/ ) { ... } | ||
- | | ||
- | Options : i Rend le motif insensible à la case (minuscules/majuscules) | ||
- | l'expression régulière m/toto/i | ||
- | : g Permet d'effectuer toutes les substitutions, | ||
- | pas que la première. | ||
- | : e Évalue le membre de droite comme une expression | ||
- | Perl. | ||
- | : o La compilation a lieu une seule fois lors de la première | ||
- | exécution. | ||
- | </code> | ||
- | ====2) ASCII==== | + | ====INDEX 2 ==== |
+ | Voici l'ordre des caractères ASCII : | ||
^ ordre ^ caractère ^ ordre ^ caractère ^ ordre ^ caractère ^ ordre ^ caractère ^ ordre ^ caractère ^ ordre ^ caractère ^ | ^ ordre ^ caractère ^ ordre ^ caractère ^ ordre ^ caractère ^ ordre ^ caractère ^ ordre ^ caractère ^ ordre ^ caractère ^ |