logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
doc:programmation:shell:regexp [08/08/2015 19:00]
milou [REGEXP]
doc:programmation:shell:regexp [05/07/2023 11:44] (Version actuelle)
Croutons [Liens]
Ligne 13: Ligne 13:
 ===== Utilisation ===== ===== Utilisation =====
  
-Les regexp servent à manipuler des chaines ​de caractères : recherches, expansions, substitutions.+Les regexp servent à manipuler des chaînes ​de caractères : recherches, expansions, substitutions.
  
-Manipuler les chaînes de caractères est essentiel en informatique,​ surtout dans les logiciels libres ( dont internet ! ) qui favorisent dès que possible le texte comme langage commun "​universel"​ entre les machines et l'​homme aussi bien qu'​entre systèmes parfois très différents. \\+Manipuler les chaînes de caractères est essentiel en informatique,​ surtout dans les logiciels libres (dont internet !) qui favorisent dès que possible le texte comme langage commun "​universel"​ entre les machines et l'​homme aussi bien qu'​entre systèmes parfois très différents. \\
 Si tous les fichiers de configuration sont en texte dans les logiciels libres, ce n'est pas par hasard, et s'ils sont souvent en binaire dans les logiciels propriétaires non plus (-_-); . Si tous les fichiers de configuration sont en texte dans les logiciels libres, ce n'est pas par hasard, et s'ils sont souvent en binaire dans les logiciels propriétaires non plus (-_-); .
  
Ligne 25: Ligne 25:
 Il faut donc savoir si vous utilisez la norme **POSIX**, **perl**, **python**...</​note>​ Il faut donc savoir si vous utilisez la norme **POSIX**, **perl**, **python**...</​note>​
  
-À noter que, concernant le shell (la ligne de commande) vous allez aussi trouver le mot **Glob**. \\ +À noter que, concernant le shell (le shell (l'​interpréteur ​de commandes) vous allez aussi trouver le mot **Glob**. \\ 
-La nuance est que l'​expression va concerner ​l'​expansion ​et non la modification dans les chaines ​de caractère.+La nuance est que l'​expression va concerner ​le développement des chemins ​et non la modification dans les chaînes ​de caractère.
  
 Vous connaissez sûrement __au moins deux__ des principales expressions Glob mises ici : ''?​ * \ []''​ Vous connaissez sûrement __au moins deux__ des principales expressions Glob mises ici : ''?​ * \ []''​
Ligne 49: Ligne 49:
 Tout d'​abord,​ un exemple pour appréhender les notions utilisées dans cette page. \\ Tout d'​abord,​ un exemple pour appréhender les notions utilisées dans cette page. \\
 Imaginons que, dans un répertoire,​ nous désirons sélectionner toutes les //chaînes de caractères//​((**CHAÎNE DE CARACTÈRES** : \\ Imaginons que, dans un répertoire,​ nous désirons sélectionner toutes les //chaînes de caractères//​((**CHAÎNE DE CARACTÈRES** : \\
-Les //chaîne de caractères//​ sont des caractères accolés, un mot, une phrase ou un nom de fichier.)) dont la rédaction contient **3 a** contigues ​(**aaa**). \\ +Les //chaîne de caractères//​ sont des caractères accolés, un mot, une phrase ou un nom de fichier.)) dont la rédaction contient **3 a** contigües ​(**aaa**). \\ 
-Cette chaîne recherchée,​ formée des 3 **a** contigues ​(**aaa**), encadrée ou non d'​autres lettres //​quelconques//,​ se nomme __dans son ensemble__ : ''​un motif''​.+Cette chaîne recherchée,​ formée des 3 **a** contigües ​(**aaa**), encadrée ou non d'​autres lettres //​quelconques//,​ se nomme __dans son ensemble__ : ''​un motif''​.
  
 Pour décrire précisément ces **motifs** à un programme, on utilise des //​expressions régulières//​ ou //regular expression//​ (ou encore un **regexp** en abrégé courant). Pour décrire précisément ces **motifs** à un programme, on utilise des //​expressions régulières//​ ou //regular expression//​ (ou encore un **regexp** en abrégé courant).
Ligne 70: 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 151: 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 166: 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 172: 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 196: 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 202: 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 207: 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 213: 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 225: 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 234: Ligne 251:
 ===== Liens ===== ===== Liens =====
  
-  * [[http://​wiki.chezlefab.net/​tuto_nix/​regexp]] 
-  * [[http://​www.emse.fr/​~mbeig/​COURS/​UNIX2002/​unix_28.html]] 
   * [[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]]+
  
  
  
  
doc/programmation/shell/regexp.1439053207.txt.gz · Dernière modification: 08/08/2015 19:00 par milou

Pied de page des forums

Propulsé par FluxBB