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
Prochaine révision Les deux révisions suivantes
doc:programmation:shell:regexp [26/08/2013 12:26]
smolski [REGEXP]
doc:programmation:shell:regexp [22/09/2013 09:19]
smolski [Utilisation]
Ligne 8: Ligne 8:
     * Création par **smolski** 26/08/2013     * Création par **smolski** 26/08/2013
     * Testé par <...> le <...>     * Testé par <...> le <...>
-  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=1038 | Lien vers le forum concernant ce tuto]]+  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=1038 | Lien vers le forum concernant ce tuto]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
  
-  N'​hésitez pas à y faire part de vos remarquessuccèsaméliorations ​ou échecs ​!+=== Nota === 
 + 
 +Contributeursles FIXME sont là pour vous aidersupprimez-les une fois le problème corrigé ​ou le champ rempli ​!
  
 ===== Utilisation ===== ===== Utilisation =====
Ligne 23: Ligne 25:
 //Même si c'est souvent un exercice de l'​esprit,​ ça vaut le coup de faire l'​effort d'​apprendre à les utiliser.// //Même si c'est souvent un exercice de l'​esprit,​ ça vaut le coup de faire l'​effort d'​apprendre à les utiliser.//
  
-Attention, il existe plusieurs syntaxes de regexp qui diffèrent un peu selon les programmes, pas pour ennuyer l'​utilisateur,​ mais il s'agit de choix faits pour des raisons de fonctionnalités et d'​optimisation. \\ +<note warning>​**Attention**, il existe plusieurs syntaxes de regexp qui diffèrent un peu selon les programmes, pas pour ennuyer l'​utilisateur,​ mais il s'agit de choix faits pour des raisons de fonctionnalités et d'​optimisation. \\ 
-Il faut donc savoir si vous utilisez la norme **POSIX**, **perl**, **python**...+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 (la ligne de commande) 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 l'​expansion et non la modification dans les chaines 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 : ''​? * \ []''​
-    ​? * \ []+
  
 //Merci à //​**Haricophile**//​ pour cette présentation.//​ :-) //Merci à //​**Haricophile**//​ pour cette présentation.//​ :-)
Ligne 36: Ligne 37:
 ===== Introduction ===== ===== Introduction =====
  
-Les regexp ​**[[manuel:bash]]** **dash** **zsh** //​etc...// ​sont des regexp pour les noms de fichiers ​même. \\ +Les //regexp// des [[manuel:shell]] sont des règles ​de filtrage permettant de sélectionner des fichiers ​selon leur nom ou leur emplacement. \\ 
-Elles ne sont pas transmises au programme tel quel mais remplacées par bash.+Ces règles ​ne sont pas transmises au programme tel quel mais sont remplacées par le shell utilisé.
  
-Par exemple pour cette commande [[commande:ls]]((l'​option **-d** permet à **ls** de lister les répertoires sans leur contenu)):+Pour la commodité de ce tuto, sauf indication contraire, nous utiliserons ici le shell [[:​doc:​programmation:​bash]]. 
 + 
 +Par exemple pour cette commande [[:​doc:​systeme:ls]] dont l'​option **-d** permet à **ls** de lister ​uniquement ​les répertoiressans leur contenu :
 <code bash> <code bash>
 ls -d *</​code>​ ls -d *</​code>​
  
-C'est bash qui va **interpréter** la regexp * (étoile) et la remplacer par tout le contenu du répertoire rendu ainsi lisible pour la commande ls et son action ​propre ​sur chacun d'eux.+C'est bash qui va **interpréter** la regexp * (étoile) et la remplacer par tout le contenu du répertoire rendu ainsi lisible pour la commande ls et son action sur chacun d'eux.
    ​fichier1 fichier2 … dossier1 …    ​fichier1 fichier2 … dossier1 …
  
Ligne 50: Ligne 53:
  
 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** : \\ 
-Ce sont des caractères accolés, un mot, une phrase ou un nom de fichier. ​\\ +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**). \\ 
-)) dont la rédaction contient **3 a** contigues (**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 formée des 3 **a** contigues (**aaa**), encadrée ​par un nombre //​quelconque//​ (éventuellement nul) de 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 60: Ligne 61:
 ==== Syntaxes ==== ==== Syntaxes ====
  
-Pour ces **regexp**, __Différents programmes__ //​utilisent//​ __différentes syntaxes__, de ce fait leur __symbolique peut être différente__ il alors faut bien distinguer le contexte où interviennent les **regexp**. ​\\ +Pour ces **regexp**, __Différents programmes__ //​utilisent//​ __différentes syntaxes__, de ce fait leur __symbolique peut être différente__ il faut donc bien distinguer le contexte où interviennent les **regexp**. 
-Par exemple, un **regexp** destiné à l'​utilisation d'une commande ​**sed****find** **locate** ou **grep**, devra être écrit différemment dans le contexte de __l'​utilisation d'une commande **bash**__ (voir : [[commande:​les_metacaracteres | Bash - Les metacaractères (Pattern - Glob)]]). ​\\+ 
 +Par exemple, un **regexp** destiné à l'​utilisation d'une commande ​[[:​doc:​systeme:​sed]][[:​doc:​systeme:​find]], [[:​doc:​systeme:​locate]] ou [[:​doc:​systeme:​grep]], devra être écrit différemment dans le contexte de __l'​utilisation d'une commande **bash**__ (voir : [[commande:​les_metacaracteres | Bash - Les metacaractères (Pattern - Glob)]]). 
 //Idem pour des contextes différents...//​ //Idem pour des contextes différents...//​
  
-Pour être clair dans ce wiki, nous indiquerons le terme REGEXP pour ce qui concerne le contexte //find - locate - grep - sed//. \\ +Pour être clair dans ce wiki, 
-Et nous utiliserons le terme GLOB pour ce qui concerne le contexte du //bash//.+  - nous indiquerons le terme REGEXP pour ce qui concerne le contexte //find - locate - grep - sed// 
 +  - et nous utiliserons le terme GLOB pour ce qui concerne le contexte du //bash//.
  
 ==== Illustration ==== ==== Illustration ====
  
-== Dans l'​utilisation de find - locate - grep - sed ==+== Pour find - locate - grep - sed ==
  
-   pl[oi]p+Avec : ''​pl[oi]p''​ les caractères //​crochets//​ ''​[ ]''​ définissent les **regexp** concernant les chaînes de caractères ''​plop plip''​.
  
-Ces caractères //​crochets//​ ''​[ ]''​ définissent les **regexp** concernant les chaînes de caractères ''​plop plip''​.+== Pour bash : ==
  
-== Et pour bash : ==+Pour avoir la même expression ​pour bash, il faut écrire ​''​pl{o,​i}p''​
  
-   ​pl{o,​i}p +Nous voyons que dans le contexte **bash**, il faudra plutôt utiliser ​les caractères //​accolades//​ ''​{ }''​ pour définir les **glob** concernant les mêmes chaînes de caractères ''​plop plip''​.
- +
-Nous voyons que dans le contexte **bash**, il faudra plutôt utiliser ​ces caractères //​accolades//​ ''​{}''​ pour définir les **glob** concernant les mêmes chaînes de caractères ''​plop plip''​.+
  
 ==== Conclusion ==== ==== Conclusion ====
Ligne 94: Ligne 96:
  
   - [[manuel:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   - [[manuel:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
-  - [[manuel:vim]] - L'​éditeur fétiche des amoureux du terminal !+  - [[:​doc:​editeurs:vim]] - L'​éditeur fétiche des amoureux du terminal !
  
-Pour réaliser les TP mis en exemple dans ce tuto, il vous faut préparer ces  ​répertoire ​et fichier, permettant d'​accomplir les TP qui vont suivre. \\+Pour réaliser les TP mis en exemple dans ce tuto, il vous faut préparer ces répertoires ​et fichiers, permettant d'​accomplir les TP qui vont suivre. \\
 Créer le repertoire ''​tuto_regexp''​ dans votre ''/​home/​user''​ : Créer le repertoire ''​tuto_regexp''​ dans votre ''/​home/​user''​ :
- +<code bash> 
-   $ mkdir /​home/​user/​tuto_regexp+mkdir /​home/​user/​tuto_regexp</​code>​
  
 Compléter ce répertoire avec les TP qui suivent. \\  Compléter ce répertoire avec les TP qui suivent. \\ 
-Nous seront ainsi fin prêt pour réaliser les TP mis en exemple dans ce tuto ! ;-)+Nous seront ainsi fin prêts ​pour réaliser les TP mis en exemple dans ce tuto ! ;-)
  
 === TP-01 === === TP-01 ===
doc/programmation/shell/regexp.txt · Dernière modification: 05/07/2023 11:44 par Croutons

Pied de page des forums

Propulsé par FluxBB