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 [22/09/2013 09:55]
smolski [Introduction]
doc:programmation:shell:regexp [22/09/2013 11:17]
smolski [REGEXP]
Ligne 5: Ligne 5:
   * 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 : [[manuel:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[manuel:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
-  * Suivi : {{tag>en-chantier ​à-tester}} +  * Suivi : {{tag>​à-compléter}} 
-    * Création par **smolski** ​26/08/2013 +    * Création par **smolski** ​novembre 2011 je crois ? 
-    * Testé par <​...> ​le <...>+    * Testé par **smolski** ​le 26/08/2013
   * 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 !))   * 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 !))
  
Ligne 41: Ligne 41:
  
 Par exemple pour cette commande [[:​doc:​systeme:​ls]] dont l'​option **-d** permet à **ls** de lister uniquement les répertoires,​ sans leur contenu : Par exemple pour cette commande [[:​doc:​systeme:​ls]] dont l'​option **-d** permet à **ls** de lister uniquement les répertoires,​ sans leur contenu :
-<​code ​bash>+<​code ​user>
 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 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 ​comme ici par exemple : 
-   ​fichier1 fichier2 … dossier1 …+  fichier1 fichier2 … dossier1 …
  
 <note important>​**ATTENTION !** <note important>​**ATTENTION !**
Ligne 87: Ligne 87:
 ===== REGEXP - Utilisation pour sed find grep locate ===== ===== REGEXP - Utilisation pour sed find grep locate =====
  
-Dans ce tuto, nous allons donc nous intéresser aux ''​regexp'' ​utilisées par+Dans ce tuto, nous allons donc nous intéresser aux **regexp** utilisées par
 **sed**, **find**, **grep** et **locate** (sensiblement les mêmes). **sed**, **find**, **grep** et **locate** (sensiblement les mêmes).
  
 ==== Préparation pour executer les TP ==== ==== Préparation pour executer les TP ====
  
-  - [[manuel:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) +Nous allons ici utiliser ​[[:​doc:​editeurs:​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épertoires et fichiers, 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. \\ 
-Créer le repertoire ​''​tuto_regexp''​ dans votre ''/​home/​user''​ : +Créer le repertoire ''/​home/​user/​tuto_regexp''​ : 
-<​code ​bash+<​code ​user
-mkdir /home/user/​tuto_regexp</​code>​+mkdir ~/​tuto_regexp</​code>​
  
-Compléter ce répertoire ​avec les TP qui suivent. \\  +Compléter ce répertoire ​comme indiqué dans les TP qui suivent. \\  
-Nous seront ainsi fin prêts 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 ===
  
 Créer le fichier abraca et y inscrire le mot : ''​Abracadabrantesque''​ ainsi : Créer le fichier abraca et y inscrire le mot : ''​Abracadabrantesque''​ ainsi :
-<​code ​bash+<​code ​user
-vim /home/user/​tuto_regexp/​abraca</​code>​+vim ~/​tuto_regexp/​abraca</​code>​
  
-et taper :+et écrire ​:
    ​Abracadabrantesque    ​Abracadabrantesque
  
Ligne 121: Ligne 120:
 Ces caractères suivants ont un statut particulier dans les **regexp** : Ces caractères suivants ont un statut particulier dans les **regexp** :
  
-   ^ . [ ] $ * { } \+  * L'​accent circonflexe : '' ​''​ 
 +  * Le point : '' ​''​ 
 +  * Les crochets doubles : ''​[ ] ''​ 
 +  * Le signe dollar : '' ​''​ 
 +  ​L'​étoile : ''​ * ''​ 
 +  * Les accolades doubles : '' ​{ } ''​  
 +  * L'​anti-slash : '' ​''​
  
-Avec les **regexp**, les shells ​(lignes de commande) ​effectuent certaines substitutions dans les commandes entrées par les utilisateurs avant de les exécuter.+Avec les **regexp**, les //shells// effectuent certaines substitutions dans les commandes entrées par les utilisateurs avant de les exécuter.
  
 ==== Les caractères ==== ==== Les caractères ====
  
-La première chose que l'on veut pouvoir reconnaître avec des motif, ce sont les +La première chose que l'on veut pouvoir reconnaître avec des motif, ce sont les mots que l'on peut écrire sans **REGEXP**. \\ 
-mots que l'on peut écrire sans **regexp**. \\ +**Exemple :**
-Exemple : +
    ​Abracadabrantesque    ​Abracadabrantesque
  
 Toutes ces lettres sont des caractères pouvant former une ''​regexp''​. \\  Toutes ces lettres sont des caractères pouvant former une ''​regexp''​. \\ 
-''​Abracadantesque''​ est donc déjà en soi une ''​regexp''​ reconnaissant exactement +''​Abracadantesque''​ est donc déjà en soi une ''​REGEXP''​ reconnaissant exactement le mot ''​Abracadabrantesque''​.
-le mot ''​Abracadabrantesque''​.+
  
 ==== Les jokers ==== ==== Les jokers ====
- 
  
 ''​A.racadabrant....e''​ ''​A.racadabrant....e''​
  
-Comme vous l'​aurez compris, les ''​.'' ​(points) ​signifient //​n'​importe quel caractère//​. \\ +Comme vous l'​aurez compris, les points ​''​.''​ signifient //​n'​importe quel caractère//​. \\ 
-La chaîne ci-dessus est une ''​regexp'' ​qui reconnaît exactement les caractères entrant dans le mot recherché. \\  +La chaîne ci-dessus est dans son ensemble ​une **REGEXP** ​qui reconnaît exactement les caractères entrant dans le mot recherché. \\  
-En effet, ''​.''​ (le point) est un caractère spécial reconnaissant //​n'​importe quel caractère//​. On appelle aussi ce caractère un ''​joker''​((En bash, le caractère joker est ''?''​))+En effet, ''​.''​ (le point) est un caractère spécial reconnaissant //​n'​importe quel caractère//​. 
 +<note tip>On appelle aussi ce caractère un ''​joker''​((En bash, le caractère joker est ''?''​))</​note>​ 
 + 
 +==== Les caractères échappés ==== 
 + 
 +Tous nos caractères spéciaux ont des significations particulières,​ nous l'​avons vu avec le .((point)), c'est vrai pour les autres. \\ 
 +Ainsi, pour reconnaître chacun d'eux en tant que caractère non spécial, il faut l'​échapper par un \((anti-slash)). 
 + 
 +Ainsi la combinaison : ''​\.''​((anti-slash point)) reconnaît simplement ''​.''​((point)) \\ 
 +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)) 
 + 
 +//Eh oui !// :-D 
 + 
 +==== Les caractères répétition ==== 
 + 
 +Quand on ne sait pas combien de fois un caractère va apparaître,​ on l'​indique avec une étoile * \\ 
 + 
 +**Exemple** : \\ 
 +''​Ah*''​ reconnaît aussi bien « Ah » que « Ahhhhhhhhhhhhhhhhhhhhhhhhhh » ou même « A » 
 + 
 +Quand on ne sait pas si un caractère va apparaître une fois ou jamais, on l'​indique avec un point d'​interrogation échappé ''​\?''​ \\ 
 + 
 +**Exemple** : \\ 
 +La **REGEXP** : ''​Chevals\?''​ reconnaît aussi bien « Cheval » que « Chevals ». \\ 
 +Autre exemple : ''​coq\?​uille''​  
 + 
 +==== Les ensembles de caractères possibles ==== 
 + 
 +''​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-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 « - ». 
 + 
 +=== Remarque : === 
 +Il y a aussi des classes de caractères déjà prédéfinies. 
 + 
 +**Tableau des classes prédéfinies** [[http://​www.commentcamarche.net/​contents/​php/​phpreg.php3 | Source]] (merci titia) :-) 
 +^  classe ​ ^   ​Resultat ​  ^ 
 +|[:alnum:] |  caractères alphanumériques (équivalent à [A-Za-z0-9])| 
 +|[:alpha:] |  caractères alphabétiques ([A-Za-z])| 
 +|[:blank:] |  caractères blanc (espace, tabulation)| 
 +|[:ctrl:] |  caractères de contrôle (les premiers du code ASCII| 
 +|[:digit:] |  chiffre ([0-9])| 
 +|[:graph:] |  caractère d'​imprimerie (qui fait une marque sur l'​écran en quelque sorte)| 
 +|[:print:] |  caractère imprimable (qui passe à l'​imprimante ... tout sauf les caractères de contrôle)| 
 +|[:punct:] |  caractère de ponctuation| 
 +|[:space:] |  caractère d'​espacement| 
 +|[:upper:] |  caractère majuscule| 
 +|[:xdigit:] |  caractère hexadécimal| 
 + 
 +==== Les caractères interdits ==== 
 + 
 +''​[^x]''​ reconnaît tous les caractères sauf « x » \\ 
 +''​[^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 
 + 
 +==== Début et fin de ligne ==== 
 + 
 +''​^''​ désigne un début de ligne \\ 
 +''​$''​ désigne une fin de ligne
  
-=== TP 01 ===+**Exemple ​:**
  
 +''​^Pouet''​ reconnaîtra le motif //Pouet// s'il se trouve en début de ligne.
  
 +==== Combinaisons ====
  
 +''​[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 ».
  
 +//De nombreux TP restent à suivre...// :-D
 ===== Liens utiles : ===== ===== Liens utiles : =====
  
doc/programmation/shell/regexp.txt · Dernière modification: 05/07/2023 11:44 par Croutons

Pied de page des forums

Propulsé par FluxBB