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:shell:regexp [14/04/2015 19:35] milou [REGEXP] |
doc:programmation:shell:regexp [23/09/2015 13:43] milou [Les caractères regexp] |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
* Niveau requis : {{tag>avisé}} | * Niveau requis : {{tag>avisé}} | ||
* Commentaires : //Les caractères spéciaux utilisés dans les commandes en ligne. // | * Commentaires : //Les caractères spéciaux utilisés dans les commandes en ligne. // | ||
- | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
* Suivi : | * Suivi : | ||
* Création par [[user>smolski]] le 23/09/2013 | * Création par [[user>smolski]] le 23/09/2013 | ||
Ligne 71: | Ligne 70: | ||
== Pour find - locate - grep - sed == | == Pour find - locate - grep - sed == | ||
- | Avec : ''pl[oi]p'' les caractères //crochets// ''[ ]'' définissent les **regexp** concernant les chaînes de caractères ''plop plip''. | + | Avec : ''pl[oi]p'' les caractères //crochets// <key>[</key> <key>] </key>définissent les **regexp** concernant les chaînes de caractères ''plop plip''. |
== Pour bash : == | == Pour bash : == | ||
Pour avoir la même expression avec bash, il faudra écrire : ''pl{o,i}p''. \\ | Pour avoir la même expression avec bash, il faudra écrire : ''pl{o,i}p''. \\ | ||
- | Nous voyons donc que dans le contexte **bash**, il faudra utiliser((à la place des caractères //crochets// ''[...]'' de l'exemple précédent)) les caractères //accolades// ''{ }'' pour définir les **glob** concernant les mêmes chaînes de caractères ''plop plip''. | + | Nous voyons donc que dans le contexte **bash**, il faudra utiliser((à la place des caractères //crochets// <key>[</key> <key>]</key>de l'exemple précédent)) les caractères //accolades// <key>{</key> <key>}</key> pour définir les **glob** concernant les mêmes chaînes de caractères ''plop plip''. |
==== Conclusion ==== | ==== Conclusion ==== | ||
Ligne 152: | Ligne 151: | ||
Ainsi la combinaison : ''\.''((anti-slash point)) reconnaît simplement ''.''((point)) \\ | Ainsi la combinaison : ''\.''((anti-slash point)) reconnaît simplement ''.''((point)) \\ | ||
+ | |||
Comme la combinaison : ''\\''((anti-slash antislash)) reconnaît ''\''((anti-slash)) \\ | Comme la combinaison : ''\\''((anti-slash antislash)) reconnaît ''\''((anti-slash)) \\ | ||
+ | |||
Ou encore la combinaison : ''\\\.''((anti-slash anti-slash anti-slash point)) reconnaît \.((anti-slash point)) | Ou encore la combinaison : ''\\\.''((anti-slash anti-slash anti-slash point)) reconnaît \.((anti-slash point)) | ||
Ligne 167: | Ligne 168: | ||
**Exemple** : \\ | **Exemple** : \\ | ||
+ | |||
La **REGEXP** : ''Chevals\?'' reconnaît aussi bien « Cheval » que « Chevals ». \\ | La **REGEXP** : ''Chevals\?'' reconnaît aussi bien « Cheval » que « Chevals ». \\ | ||
+ | |||
Autre exemple : ''coq\?uille'' | Autre exemple : ''coq\?uille'' | ||
Ligne 173: | Ligne 176: | ||
''Par[lt]ez'' reconnaît aussi bien « Parlez » que « Partez ». \\ | ''Par[lt]ez'' reconnaît aussi bien « Parlez » que « Partez ». \\ | ||
+ | |||
''[a-z]'' reconnaît n'importe quelle lettre minuscule (non altérée)2) de l'alphabet. \\ | ''[a-z]'' reconnaît n'importe quelle lettre minuscule (non altérée)2) de l'alphabet. \\ | ||
+ | |||
''[A-Za-z]'' reconnaît n'importe quelle lettre (non altérée) de l'alphabet. \\ | ''[A-Za-z]'' reconnaît n'importe quelle lettre (non altérée) de l'alphabet. \\ | ||
+ | |||
''[0-9\-]'' reconnaît les chiffres et le caractère « - ». | ''[0-9\-]'' reconnaît les chiffres et le caractère « - ». | ||
Ligne 197: | Ligne 203: | ||
''[^x]'' reconnaît tous les caractères sauf « x » \\ | ''[^x]'' reconnaît tous les caractères sauf « x » \\ | ||
+ | |||
''[^xy]'' reconnaît tous les caractères sauf « x » et « y » \\ | ''[^xy]'' reconnaît tous les caractères sauf « x » et « y » \\ | ||
+ | |||
''[^a-z]'' reconnaît tous les caractères sauf les lettres minuscules non altérées | ''[^a-z]'' reconnaît tous les caractères sauf les lettres minuscules non altérées | ||
Ligne 203: | Ligne 211: | ||
''^'' désigne un début de ligne \\ | ''^'' désigne un début de ligne \\ | ||
+ | |||
''$'' désigne une fin de ligne | ''$'' désigne une fin de ligne | ||
Ligne 208: | Ligne 217: | ||
''^Pouet'' reconnaîtra le motif //Pouet// s'il se trouve en début de ligne. \\ | ''^Pouet'' reconnaîtra le motif //Pouet// s'il se trouve en début de ligne. \\ | ||
+ | |||
''^$'' identifie une ligne vide. | ''^$'' identifie une ligne vide. | ||
Ligne 214: | Ligne 224: | ||
''[ab]*'' comme [ab] reconnaît aussi bien « a » que « b », [ab]* reconnaît aussi bien « aaaaaaaaa » que « abababbbbbbbbb » ou que « babbbaaa » \\ | ''[ab]*'' comme [ab] reconnaît aussi bien « a » que « b », [ab]* reconnaît aussi bien « aaaaaaaaa » que « abababbbbbbbbb » ou que « babbbaaa » \\ | ||
+ | |||
''Abra*[ca]*dabrante\?'' reconnaît les chaînes commençant par « Abr », suivi par un nombre quelconque de « a », puis un nombre quelconque de « c » et de « a » suivis par « dabrant », suivi ou non par « e ». | ''Abra*[ca]*dabrante\?'' reconnaît les chaînes commençant par « Abr », suivi par un nombre quelconque de « a », puis un nombre quelconque de « c » et de « a » suivis par « dabrant », suivi ou non par « e ». | ||
Ligne 226: | Ligne 237: | ||
''[A-D]'' intervalle de A à D (A, B, C, D) par exemple **bof[A-D]** donne //bofA, bofB, bofC, bofD// | ''[A-D]'' intervalle de A à D (A, B, C, D) par exemple **bof[A-D]** donne //bofA, bofB, bofC, bofD// | ||
+ | |||
''[2-5]'' intervalle de 2 à 5 (2, 3, 4, 5) par exemple **12[2-5]2** donne //1222, 1232, 1242, 1252// | ''[2-5]'' intervalle de 2 à 5 (2, 3, 4, 5) par exemple **12[2-5]2** donne //1222, 1232, 1242, 1252// | ||
+ | |||
[''2-56]'' intervalle de 2 à 5 et 6 (//et non pas 56//) (2, 3, 4, 5, 6) par exemple **12[2-56]2** donne //1222, 1232, 1242, 1252, 1262// | [''2-56]'' intervalle de 2 à 5 et 6 (//et non pas 56//) (2, 3, 4, 5, 6) par exemple **12[2-56]2** donne //1222, 1232, 1242, 1252, 1262// | ||
+ | |||
''a-dA-D]'' intervalle de a à d et A à D (a, b, c, d, A, B, C, D) par exemple **z[a-dA-D]y** donne //zay, zby, zcy, zdy, zAy, zBy, zCy, zDy// | ''a-dA-D]'' intervalle de a à d et A à D (a, b, c, d, A, B, C, D) par exemple **z[a-dA-D]y** donne //zay, zby, zcy, zdy, zAy, zBy, zCy, zDy// | ||
+ | |||
''[1-3-]'' intervalle de 1 à 3 et - (1, 2, 3, -) par exemple **[1-3-]3** donne //13, 23, 33, -3// | ''[1-3-]'' intervalle de 1 à 3 et - (1, 2, 3, -) par exemple **[1-3-]3** donne //13, 23, 33, -3// | ||
+ | |||
''[a-cI-K1-3]'' intervalle de a à c, I à K et 1 à 3 (//a, b, c, I, J, K, 1, 2, 3//) | ''[a-cI-K1-3]'' intervalle de a à c, I à K et 1 à 3 (//a, b, c, I, J, K, 1, 2, 3//) | ||
Ligne 239: | Ligne 255: | ||
* [[http://cyberzoide.developpez.com/unix/sys.php3#metachar]] | * [[http://cyberzoide.developpez.com/unix/sys.php3#metachar]] | ||
* [[http://www.funix.org/fr/unix/expr-sed.htm]] | * [[http://www.funix.org/fr/unix/expr-sed.htm]] | ||
- | * [[http://www.emse.fr/~mbeig/COURS/UNIX2002/unix_28.html]] | + | |