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 [07/08/2014 09:40] Hypathie [Rappel et contexte] |
doc:programmation:shells:bash-vii-globs-etendus-regex [07/08/2014 09:53] Hypathie [INDEX 1 : caractères des ERb et ERe avec grep, grep -E, sed, sed -r] |
||
---|---|---|---|
Ligne 176: | Ligne 176: | ||
**Voici les caractères utilisables :** | **Voici les caractères utilisables :** | ||
- | ^ "signes" regex ERE basique ^ significations (comparez avec le tableau de l'index) ^ | + | ^ "signes" regex ERE basique ^ significations (comparez avec le tableau de [[atelier:chantier:bash-vii-globs-etendus-regex#index-1caracteres-des-erb-et-ere-avec-grep-grep-e-sed-sed-r|l'index 1]]) ^ |
| **''.''** | Correspond à tout caractère unique.\\ (Attention en ligne de commandes le point représente le répertoire courant.) | | | **''.''** | Correspond à tout caractère unique.\\ (Attention en ligne de commandes le point représente le répertoire courant.) | | ||
| **''*''** | 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 à ''a'', ''b'', ''abab'', ''ababab'', et ainsi de suite.\\ (Attention en ligne de commandes, **''*''** signifie "tout" : ''rm blabla*'' -> supprime tout ce qui commence par blabla dans le répertoire courant)| | | **''*''** | 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 à ''a'', ''b'', ''abab'', ''ababab'', et ainsi de suite.\\ (Attention en ligne de commandes, **''*''** signifie "tout" : ''rm blabla*'' -> supprime tout ce qui commence par blabla dans le répertoire courant)| | ||
Ligne 300: | Ligne 300: | ||
* Elles s'utilisent __uniquement pour la correspondance avec des variables__. | * Elles s'utilisent __uniquement pour la correspondance avec des variables__. | ||
| | ||
- | * Les caractères spécifiques aux expressions régulières (//ERb// et //ERe//) utilisées ici uniquement dans le contexte de correspondance avec une variable, sont identiques et ont une signification similaire lorsqu'ils sont utilisés avec d'autres programmes, grep, grep -E, sed, sed -r, awk, mais dans un contexte beaucoup plus large.\\ (comparez avec [[http://wiki.debian-facile.org/atelier:chantier:bash-vii-globs-etendus-regex?&#index-1caracteres-regexp-sed|l'index1]]). | + | * Les caractères spécifiques aux expressions régulières (//ERb// et //ERe//) utilisées ici uniquement dans le contexte de correspondance avec une variable, sont identiques et ont une signification similaire lorsqu'ils sont utilisés avec d'autres programmes, grep, grep -E, sed, sed -r, awk, mais dans un contexte beaucoup plus large.\\ (comparez avec [[atelier:chantier:bash-vii-globs-etendus-regex#index-1caracteres-des-erb-et-ere-avec-grep-grep-e-sed-sed-r|l'index1]]). |
</note> | </note> | ||
Ligne 360: | Ligne 360: | ||
**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 1 : caractères des ERb et ERe avec grep, grep -E, sed, sed -r===== | =====INDEX 1 : caractères des ERb et ERe avec grep, grep -E, sed, sed -r===== | ||
+ | |||
+ | Comparez ce qui suit avec [[atelier:chantier:bash-vii-globs-etendus-regex#caracteres-servant-aux-expressions-regulieres-de-correspondance-avec-une-variable|]].\\ | ||
+ | |||
+ | ====tableau ERb et ERE par commandes==== | ||
+ | |||
+ | ^ caractères ^ [...] ^ . ^ * ^<nowiki>^</nowiki> ^ $ ^ ? ^ + ^ <nowiki>|</nowiki> ^( ) ^ <nowiki>[:class:]</nowiki> ^ | ||
+ | | grep | ok |ok |ok |ok |ok |- |- | - | - | - | | ||
+ | | grep -E | ok |ok | ok|ok |ok |ok|ok | ok |ok | ok <nowiki>[[:class:]]</nowiki> | | ||
+ | | sed | ok |ok |ok |ok |ok |- |- | - | - | - | | ||
+ | | sed -r | ok |ok | ok|ok |ok |ok|ok | ok |ok | ok <nowiki>[[:class:]]</nowiki> | | ||
+ | | awk | ok |ok | ok|ok |ok |ok|ok | ok |ok | ok <nowiki>[:class:]</nowiki> | | ||
+ | |||
+ | ====détail des classes ==== | ||
+ | |||
+ | * Avec sed il faut l'option -r, bien que les classes relèvent des //ERb//. | ||
+ | * Avec grep, elles ne nécessitent pas l'option -R ou egrep. | ||
+ | |||
+ | ^ ^ ^ | ||
+ | |''<nowiki>[[:alnum:]]</nowiki>'' | Alpha-numerique [a-z A-Z 0-9]| | ||
+ | |''<nowiki>[[:alpha:]]</nowiki>'' | Alphabetic [a-z A-Z] | | ||
+ | |''<nowiki>[[:blank:]]</nowiki>'' | Espaces ou tabulations | | ||
+ | |''<nowiki>[[:cntrl:]]</nowiki>'' | Caractères de contrôle | | ||
+ | |''<nowiki>[[:digit:]]</nowiki>'' | Nombres [0-9] | | ||
+ | |''<nowiki>[[:graph:]]</nowiki>'' | Tous les caractères visibles (à l'exclusion des espaces)| | ||
+ | |''<nowiki>[[:lower:]]</nowiki>'' | Lettres minuscules [a-z] | | ||
+ | |''<nowiki>[[:print:]]</nowiki>'' | Caractères imprimables (tous caractères sauf ceux de contrôle)| | ||
+ | |''<nowiki> | ||
+ | [[:punct:]] </nowiki>'' | Les caractères de ponctuation | | ||
+ | |''<nowiki>[[:space:]]</nowiki>'' | Les espaces | | ||
+ | |''<nowiki>[[:upper:]]</nowiki>'' | Les lettres majuscules [A-Z] | | ||
+ | |''<nowiki>[[:xdigit:]]</nowiki>'' | Chiffres hexadécimaux [0-9 a-f A-F] | | ||
+ | |||
+ | |||
+ | |||
+ | [[http://www.man-linux-magique.net/man1/grep.html|man grep fr]]\\ | ||
+ | |||
+ | [[http://heirloom.sourceforge.net/man/egrep.1.html|egrep en ]]\\ | ||
+ | |||
+ | [[http://manpagesfr.free.fr/man/man1/sed.1.html |man sed fr ]]\\ | ||
+ | |||
+ | [[http://linux.about.com/library/cmd/blcmdl1_awk.htm |man awk]] | ||
+ | |||
+ | |||
+ | ====ERb et ERe : tableaux récapitulatifs==== | ||
+ | Récapitulatif selon deux types d'expressions régulières :\\ | ||
+ | |||
+ | -les expressions régulière basiques ERb\\ | ||
+ | -les expressions régulières étendues ERe\\ | ||
+ | |||
+ | ===caractères communs au ERb et ERe=== | ||
+ | |||
+ | ^expressions ^Modèles reconnus ^ | ||
+ | |**c** | Tout non métacaractère c.| | ||
+ | |**''<nowiki>\</nowiki>''** |Échappement du caractère spécial.\\ Par exemple **''\.''** sélectionne un point littéral.| | ||
+ | |**''<nowiki>^</nowiki>''** |Test effectué au début de la chaîne.| | ||
+ | |**''$''** |Test effectué à la fin de la chaîne.| | ||
+ | |**''.''** |Tout caractère sauf une fin de ligne.| | ||
+ | |**''<nowiki> *</nowiki>''** |Zéro à n chaînes consécutives validées par l’expression régulière r.| | ||
+ | |**''<nowiki> \< </nowiki>''** |début d'un mot (caractères pouvant faire partie de <nowiki>[A-Z-z0-9]</nowiki>| | ||
+ | |**''<nowiki> \> </nowiki>''** |Fin d'un mot| | ||
+ | |**''<nowiki>[liste_de_caractères]</nowiki>''** |Un caractère cité dans la liste | | ||
+ | |**''<nowiki>[^liste_de_caractères]</nowiki>''** |Un carcatère qui n'est pas dans la liste | | ||
+ | |||
+ | * Exemples : | ||
+ | |||
+ | **''<nowiki>blabla</nowiki>''** : chaîne contenant "blabla"\\ | ||
+ | |||
+ | **''<nowiki>^blabla</nowiki>''** : chaîne commençant par "blabla"\\ | ||
+ | |||
+ | **''<nowiki>blabla$</nowiki>''** : chaîne finissant par "blabla"\\ | ||
+ | |||
+ | **''<nowiki>^[A-Z][5-8].$</nowiki>''** : chaîne composées de trois caractères, dans l'ordre :\\ une majuscule, un chiffre compris entre 5 et 8, un caractère quelconque\\ | ||
+ | |||
+ | **''<nowiki>^$</nowiki>''** : chaîne vide\\ | ||
+ | |||
+ | **''<nowiki>^[ ]*$</nowiki>''** : chaîne contenant zéro ou plusieurs espace(s) ou tabulation(s)\\ | ||
+ | |||
+ | **''<nowiki>\<tout</nowiki>''** : mot commençant par "tout", toutefois\\ | ||
+ | |||
+ | **''<nowiki>\<tout\></nowiki>''** : le mot "tout"\\ | ||
+ | |||
+ | ===Caractères spécifiques aux ERb=== | ||
+ | |||
+ | ^expressions ^Modèles reconnus ^ | ||
+ | |**''<nowiki>\{m\}</nowiki>''** | m fois le caractère précédent | | ||
+ | |**''<nowiki>\{m,\} </nowiki>''** | au moins m fois le caractère précédent | | ||
+ | |**''<nowiki>\{m,n\} </nowiki>''** | entre m et n fois le caractère précédent | | ||
+ | |**''<nowiki>\(ERb\)</nowiki>''** | mémorisation d'une ERb | | ||
+ | |**''<nowiki>\1, \2, ...</nowiki>''** | Rappel de mémorisation | | ||
+ | |||
+ | -> Le caractère **''\''** donne une signification spéciale aux parenthèses et accolades, au lieu de les rendre littérales. | ||
+ | |||
+ | |||
+ | ===Caractères spécifiques aux expressions rationnelles étentues (ERe) === | ||
+ | |||
+ | Excepté **''<nowiki>(er1)(er2)</nowiki>''** : | ||
+ | |||
+ | * Tous sont utilisables avec grep -E et egrep | ||
+ | * Tous sont utilisable avec awk | ||
+ | * Certains posent problème avec sed -r | ||
+ | |||
+ | ^expressions ^ Modèles reconnus ^ | ||
+ | |**''?''** | zéro ou une fois le caractère ou le regroupement précédent | | ||
+ | |**''+''** |une à n fois le caractère ou regroupement précédent | | ||
+ | |**''<nowiki>{m}</nowiki>''** |m fois le caractère précédent | | ||
+ | |**''<nowiki>{m,}</nowiki>''** | m fois le caractère précédent | | ||
+ | |**''<nowiki>{m,n}</nowiki>''** | entre m et n fois le caractère précédent | | ||
+ | |**''<nowiki>( er1)</nowiki>''** | regroupement | | ||
+ | |**''<nowiki>er1|er2|er3</nowiki>''** | alternative | | ||
+ | |**''<nowiki>(er)+</nowiki>''**|Une ou plus de une chaîne(s) consécutive(s) validée(s) "er".| | ||
+ | |**''<nowiki>(er)*</nowiki>''**|zéro ou plus de zéro chaîne(s) consécutive(s) validée(s) par "er" | | ||
+ | |**''<nowiki>(er)?</nowiki>''**|une chaîne bulle ou toute chaîne validée par "er".| | ||
+ | |**''<nowiki>[c1c2...]</nowiki>''**|Tout caractère expressément listé entre les crochets.| | ||
+ | |**''<nowiki>[^c1c2...]</nowiki>''**|Tout caractère excepté ceux qui sont expressément listés entre les crochets.| | ||
+ | |**''<nowiki>[c1-c2]</nowiki>''**|Tout caractère appartenant à l’intervalle c1 c2, bornes comprises.| | ||
+ | |**''<nowiki>er1|er2</nowiki>''**|Toute chaîne de caractères validée soit par er1 soit par er2.| | ||
+ | |**''<nowiki>(er)(er)</nowiki>''**|Toute chaîne validée par l’expression er, chaîne vide exclue.| | ||
+ | |**''<nowiki>(er1)(er2)</nowiki>''**|Toute chaîne de caractères de type AB, dans laquelle l’expression régulière er1 valide A et l’expression régulière er2 valide B.\\ Avec awk uniquement| | ||
+ | |||
+ | ===Les raccourcis ne sont pas posix=== | ||
+ | |||
+ | * __sed__ : | ||
+ | |||
+ | ^Séquences ^Séquences ^ | ||
+ | |**''<nowiki>\f</nowiki>''** | Produit ou correspond à un saut | | ||
+ | |**''<nowiki>\n</nowiki>''** | Produit ou correspond à un retour à la ligne | | ||
+ | |**''<nowiki>\t</nowiki>''** | Produit ou correspond à un onglet horizontal | | ||
+ | |**''<nowiki>\v</nowiki>''** | Produit ou correspond à une tabulation verticale | | ||
+ | |**''<nowiki>\w</nowiki>''** | Synonyme de **''<nowiki>[[:alnum:]]</nowiki>''** → correspond à un mot. | | ||
+ | |**''<nowiki>\W</nowiki>''** | Synonyme de **''<nowiki>[^[:alnum]]</nowiki>''** → ce qui autre qu'un mot. | | ||
+ | |**''<nowiki>\b</nowiki>''** | Correspond à une chaîne vide (blanc) à l'extrémité d'un mot | | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | * __awk__ : | ||
+ | |||
+ | ^Séquences ^Séquences ^ | ||
+ | |**''<nowiki>\b </nowiki>''** | backspace (supprime le dernier caractère d'une chaîne) | | ||
+ | |**''<nowiki>\f </nowiki>''** | formfeed (nouvelle page) | | ||
+ | |**''<nowiki>\r </nowiki>''** | carriage return (retour à la ligne) | | ||
+ | |**''<nowiki>\t </nowiki>''** | tabulation (crée une tabulation de dix espaces) | | ||
+ | |**''<nowiki>\c </nowiki>''** | tout caractère pris sous sa forme littérale\\ excepté **''<nowiki>\</nowiki>''** | | ||
+ | |||
+ | |||
+ | ====Pour aller plus loin ==== | ||
+ | Pour les PCRE (perl) supportée par egrep (grep -E ; sed et et awk ) voir [[http://www.unix.com/man-page/linux/3/pcresyntax/|pcresyntax(3)]] et [[http://manpages.courier-mta.org/htmlman3/pcresyntax.3.html|pcrepattern(3)]]\\ | ||
+ | |||
+ | Et en français [[http://www.expreg.com/pcre.php]] | ||
+ | |||