Avec Terminal: Utilisation d'expressions régulières

L'une des choses que j'ai toujours aimées à propos du terminal Linux est ce que vous pouvez réaliser en utilisant des expressions régulières. Que nous ayons besoin de trouver du texte compliqué ou de le remplacer par autre chose, l'utilisation d'expressions régulières peut grandement simplifier le travail. Commençons par le début:

AVERTISSEMENT: Ce message est une douleur dans le cul. La lecture permanente de ce message peut entraîner une perte de conscience. Faites des pauses entre les deux ou demandez à votre médecin ou à votre pharmacien avant de lire l'intégralité du message.

Qu'est-ce qu'une expression régulière?

Une expression régulière est une série de caractères spéciaux qui nous permettent de décrire un texte que nous voulons trouver. Par exemple, si nous voulions rechercher le mot «linux», il suffirait de mettre ce mot dans le programme que nous utilisons. Le mot lui-même est une expression régulière. Jusqu'à présent, cela semble très simple, mais que faire si nous voulons trouver tous les nombres dans un certain fichier? Ou toutes les lignes commençant par une majuscule? Dans ces cas, vous ne pouvez plus mettre un mot simple. La solution est d'utiliser une expression régulière.

Expressions régulières vs modèles de fichiers.

Avant d'entrer dans les expressions régulières, je veux dissiper un malentendu courant sur les expressions régulières. Une expression régulière n'est pas ce que nous mettons en paramètre dans des commandes telles que rm, cp, etc. pour faire référence à divers fichiers sur le disque dur. Ce serait un modèle de fichier. Les expressions régulières, bien que similaires en ce qu'elles utilisent des caractères communs, sont différentes. Un modèle de fichier est déclenché sur les fichiers sur le disque dur et renvoie ceux qui correspondent complètement au modèle, tandis qu'une expression régulière est déclenchée sur un texte et renvoie les lignes qui contiennent le texte recherché. Par exemple, l'expression régulière correspondant au modèle *.* ce serait quelque chose comme ^.*\..*$

Types d'expressions régulières.

Tous les programmes n'utilisent pas les mêmes expressions régulières. Bien au contraire. Il existe plusieurs types d'expressions régulières plus ou moins standard, mais il existe des programmes qui modifient légèrement la syntaxe, incluent leurs propres extensions ou utilisent même des caractères complètement différents. Par conséquent, lorsque vous souhaitez utiliser des expressions régulières avec un programme que vous ne connaissez pas bien, la première chose à faire est de consulter le manuel ou la documentation du programme pour voir à quoi ressemblent les expressions régulières qu'il reconnaît.

Premièrement, il existe deux principaux types d'expressions régulières, qui sont contenues dans le standard POSIX, qui est ce qu'utilisent les outils Linux. Ce sont les expressions régulières de base et étendues. De nombreuses commandes qui fonctionnent avec des expressions régulières, telles que grep ou sed, vous permettent d'utiliser ces deux types. J'en parlerai ci-dessous. Il y a aussi les expressions régulières de style PERL, et puis il y a des programmes comme vim ou emacs qui en utilisent des variantes. Selon ce que nous voulons faire, il peut être plus approprié d'utiliser l'un ou l'autre.

Test d'expressions régulières.

La syntaxe des expressions régulières n'a rien de trivial. Lorsque nous devons écrire une expression régulière compliquée, nous serons devant une chaîne de caractères spéciaux impossible à comprendre à première vue, donc pour apprendre à les utiliser, il est essentiel d'avoir un moyen de faire tous les tests que nous voulons et voyons les résultats facilement. C'est pourquoi je vais maintenant mettre plusieurs commandes avec lesquelles nous pouvons faire les tests et expérimenter tout ce dont nous avons besoin jusqu'à ce que nous ayons dominé les expressions régulières.

Le premier est la commande grep. C'est la commande que nous utiliserons le plus fréquemment pour effectuer des recherches. La syntaxe est la suivante:

grep [-E] 'REGEX' FICHERO
COMANDO | grep [-E] 'REGEX'

Je recommande de toujours mettre les expressions régulières entre guillemets simples pour que le shell ne le fasse pas. La première méthode consiste à rechercher une expression régulière dans un fichier. Le second permet de filtrer la sortie d'une commande via une expression régulière. Par défaut, grep utilise des expressions régulières de base. L'option -E sert à utiliser des expressions régulières étendues.

Une astuce qui peut nous aider à voir comment fonctionnent les expressions régulières consiste à activer l'utilisation de la couleur dans la commande grep. De cette façon, la partie du texte qui correspond à l'expression régulière que nous utilisons sera mise en évidence. Pour activer la couleur dans la commande grep, assurez-vous simplement que la variable d'environnement GREP_OPTIONS contenir en valeur --color, ce qui peut être fait avec cette commande:

GREP_OPTIONS=--color

Nous pouvons le mettre dans le .bashrc pour qu'il soit toujours activé.

Une autre façon d'utiliser les expressions régulières consiste à utiliser la commande sed. Ceci est plus approprié pour remplacer du texte, mais peut également être utilisé pour la recherche. La syntaxe pour cela serait comme ceci:

sed -n[r] '/REGEX/p' FICHERO
COMANDO | sed -n[r] '/REGEX/p'

La commande sed utilise également des expressions régulières de base par défaut, vous pouvez utiliser des expressions régulières étendues avec l'option -r.

Une autre commande que je veux également nommer est awk. Cette commande peut être utilisée pour de nombreuses choses, car elle vous permet d'écrire des scripts dans votre propre langage de programmation. Si nous voulons rechercher une expression régulière dans un fichier ou dans la sortie d'une commande, la façon de l'utiliser serait la suivante:

awk '/REGEX/' FICHERO
COMANDO | awk '/REGEX/'

Cette commande utilise toujours des expressions régulières étendues.

Pour faire nos tests, nous aurons également besoin d'un texte qui servira d'exemple pour le rechercher. Nous pouvons utiliser le texte suivant:

- Lista de páginas wiki:

ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/

- Fechas de lanzamiento:

Arch Linux: 11-03-2002
Gentoo: 31/03/2002
CentOs: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10/2004

Desde Linux Rulez.

C'est le texte que je vais utiliser pour les exemples dans le reste de l'article, donc je vous recommande de le copier dans un fichier pour l'avoir à portée de main depuis le terminal. Vous pouvez mettre le nom que vous voulez. Je l'ai appelé regex.

Début de la leçon.

Nous avons maintenant tout ce dont vous avez besoin pour commencer à tester les expressions régulières. Allons-y petit à petit. Je vais mettre plusieurs exemples de recherches avec des expressions régulières dans lesquelles je vais expliquer à quoi sert chaque caractère. Ce ne sont pas de très bons exemples, mais comme je vais avoir un très long post, je ne veux plus le compliquer. Et je vais juste gratter la surface de ce qui peut être fait avec les expressions régulières.

Le plus simple de tous est de rechercher un mot spécifique, par exemple, supposons que nous voulions rechercher toutes les lignes qui contiennent le mot «Linux». C'est le plus simple, car il suffit d'écrire:

grep 'Linux' regex

Et nous pouvons voir le résultat:

voûteLinux/Unix: https://wiki.archlinux.org/ Arch Linux/Unix: 11-03-2002 À partir de Linux/Unix Règlez.

Ce sont les trois lignes qui contiennent le mot "Linux" qui, si nous avons utilisé l'astuce de couleur, apparaîtra en surbrillance. Notez qu'il reconnaît le mot que nous recherchons même s'il fait partie d'un mot plus long comme dans "ArchLinux". Cependant, il ne met pas en évidence le mot "linux" qui apparaît dans l'URL "https://wiki.archlinux.org/". C'est parce que là il apparaît avec le "l" minuscule et nous l'avons recherché en majuscule. La commande grep a des options pour cela, mais je ne vais pas en parler dans un article sur les expressions régulières.

Avec ce test simple, nous pouvons tirer la première conclusion:

  • Un caractère normal placé dans une expression régulière correspond à lui-même.

Ce qui veut dire que si vous mettez la lettre «a», il cherchera la lettre «a». Cela semble logique, non? 🙂

Supposons maintenant que nous voulions rechercher le mot "CentO" suivi de n'importe quel caractère, mais seulement d'un seul caractère. Pour cela, nous pouvons utiliser le caractère ".", Qui est un caractère générique qui correspond à n'importe quel caractère, mais un seul:

grep 'CentO.' regex

Et le résultat est:

CentOS: http://wiki.centos.org/
Centimes: 14-05-2004 03:32:38

Ce qui signifie qu'il inclut le "S" dans "CentOS" bien que dans un cas il soit en majuscule et dans un autre en minuscule. Si un autre personnage apparaissait à cet endroit, il l'inclurait également. Nous avons déjà la deuxième règle:

  • Le caractère "." correspond à n'importe quel caractère.

Ce n'est plus aussi trivial qu'il y paraissait, mais avec cela, nous ne pouvons pas faire grand-chose. Allons un peu plus loin. Supposons que nous voulions trouver les lignes dans lesquelles apparaissent les années 2002 et 2004. Elles ressemblent à deux recherches, mais elles peuvent être effectuées en même temps comme ceci:

grep '200[24]' regex

Ce qui signifie que nous voulons trouver le nombre 200 suivi de 2 ou 4. Et le résultat est le suivant:

Arch Linux : 11-03-2002
Gentoo: 31/03 /2002
CentOs : 14-05-2004 03:32:38
Ubuntu: 20/10/2004

Ce qui nous amène à la troisième règle:

  • Les caractères multiples entre crochets correspondent à tous les caractères entre crochets.

Les parenthèses donnent plus de jeu. ils peuvent également être utilisés pour exclure des caractères. Par exemple, supposons que nous voulions rechercher des sites où le caractère ":" apparaît, mais n'est pas suivi de "/". La commande serait comme ceci:

grep ':[^/]' regex

Il s'agit simplement de mettre un "^" comme premier caractère à l'intérieur du crochet. Vous pouvez mettre tous les personnages que vous souhaitez ci-dessous. Le résultat de cette dernière commande est le suivant:

ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Arch Linux: 11-03-2002 Gentoo: 31/03/2002 CentOs: 14-05-2004 03:32:38 Debian: 16/08/1993 Ubuntu: 20/10/2004

Maintenant, le ":" derrière les noms de distribution est mis en surbrillance, mais pas ceux dans les URL car les URL ont "/" après eux.

  • Mettre le caractère "^" au début d'un crochet correspond à n'importe quel caractère sauf les autres caractères dans le crochet.

Une autre chose que nous pouvons faire est de spécifier une plage de caractères. Par exemple, pour rechercher un nombre suivi d'un "-", cela ressemblerait à ceci:

grep '[0-9]-' regex

Avec cela, nous spécifions un caractère entre 0 et 9, puis un signe moins. Voyons le résultat:

Arch Linux : 11-03-CentOs 2002: 14-05-2004 03: 32: 38

Vous pouvez spécifier plusieurs plages entre crochets pour même mélanger des plages avec des caractères uniques.

  • Le fait de placer deux caractères séparés par "-" à l'intérieur des crochets correspond à n'importe quel caractère de la plage.

Voyons maintenant si nous pouvons sélectionner la première partie des URL. Celui qui dit "http" ou "https". Ils ne diffèrent que par les "s" finaux, alors faisons-le comme suit:

grep -E 'https?' regex

Le point d'interrogation est utilisé pour rendre le caractère à sa gauche facultatif. Mais maintenant, nous avons ajouté l'option -E à la commande. En effet, l'interrogation est une caractéristique des expressions régulières étendues. Jusqu'à présent, nous utilisions des expressions régulières de base, nous n'avons donc pas besoin de mettre quoi que ce soit. Voyons le résultat:

ArchLinux : https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/wiki/Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/ Ubuntu: https: //wiki.ubuntu.com/

Nous avons donc déjà une nouvelle règle:

  • Un caractère suivi de "?" correspond à ce caractère ou aucun. Ceci n'est valable que pour les expressions régulières étendues.

Nous allons maintenant trouver deux mots complètement différents. Voyons comment trouver les lignes contenant à la fois le mot «Debian» et «Ubuntu».

grep -E 'Debian|Ubuntu' regex

Avec la barre verticale, nous pouvons séparer deux ou plusieurs expressions régulières différentes et rechercher les lignes qui correspondent à l'une d'entre elles:

Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Debian: 16 / 08 / 1993
Ubuntu: 20 / 10 / 2004
  • Le caractère «|» sert à séparer plusieurs expressions régulières et correspond à l'une d'entre elles. Il est également spécifique aux expressions régulières étendues.

Nous allons continuer. Maintenant, nous allons chercher le mot «Linux», mais seulement là où il n'est pas collé à un autre mot à gauche. Nous pouvons le faire comme ceci:

grep '\

Ici, le caractère important est "<", mais il doit être échappé en plaçant "\" devant lui pour que grep l'interprète comme un caractère spécial. Le résultat est le suivant:

voûte Linux/Unix: 11-03-2002 À partir de Linux/Unix Règlez.

Vous pouvez également utiliser "\>" pour rechercher des mots qui ne sont pas les uns à côté des autres. Allons-y avec un exemple. Essayons cette commande:

grep 'http\>' regex

Le résultat qu'il produit est le suivant:

CentOS: http: //wiki.centos.org/

"Http" est sorti, mais pas "https", car dans "https" il y a encore un caractère à droite du "p" qui peut faire partie d'un mot.

  • Les caractères "<" et ">" correspondent respectivement au début et à la fin d'un mot. Ces caractères doivent être échappés afin qu'ils ne soient pas interprétés comme des caractères littéraux.

Nous allons avec les choses un peu plus compliquées. Le caractère "+" correspond au caractère à sa gauche répété au moins une fois. Ce caractère n'est disponible qu'avec les expressions régulières étendues. Avec lui, nous pouvons rechercher, par exemple, des séquences de plusieurs nombres dans une ligne commençant par ":".

grep -E ':[0-9]+' regex

Résultat:

CentOs: 14/05/2004 03: 32: 38

Le nombre 38 est également mis en évidence car il commence également par ":".

  • Le caractère "+" correspond au caractère à sa gauche, répété au moins une fois.

Vous pouvez également contrôler le nombre de répétitions à l'aide de "{" et "}". L'idée est de mettre entre accolades un nombre qui indique le nombre exact de répétitions que l'on souhaite. Vous pouvez également mettre une plage. Voyons des exemples des deux cas.

Nous allons d'abord trouver toutes les séquences à quatre chiffres qui existent:

grep '[0-9]\{4\}' regex

Notez que vous devez échapper les accolades si vous utilisez des expressions régulières de base, mais pas si vous utilisez des expressions étendues. Avec étendu, ce serait comme ceci:

grep -E '[0-9]{4}' regex

Et le résultat dans les deux cas serait le suivant:

Arch Linux : 11-03-2002
Gentoo: 31/03 /2002
CentOs : 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10 /2004
  • Les caractères "{" et "}" avec un nombre entre eux correspondent au caractère précédent répété le nombre de fois spécifié.

Maintenant, l'autre exemple avec les accolades. Supposons que nous voulions trouver des mots contenant entre 3 et 6 lettres minuscules. Nous pourrions faire ce qui suit:

grep '[a-z]\{3,6\}' regex

Et le résultat serait le suivant:

- Lista de pages wiki: ÀrchLInux: https:/ /wiki.archlinux.org/ Gtrop: https:/ /wiki.gentoo.org/wiki/Main_Pâge
CentOS: http:/ /wiki.centos.org/ RÉébène: https:/ /wiki.debian.org/ OUimpasse: https:/ /wiki.ubuntu.com/ - Fvous manquez de lancement: Àrch LInux: 11-03-2002 Gtrop: 31/03/2002 CentOs: 14-05-2004 03:32:38
Débène: 16/08/1993 Uimpasse: 20/10/2004 Desde LInux Rulez.

Ce qui, comme vous pouvez le voir, ne ressemble pas beaucoup à ce que nous voulions. C'est parce que l'expression régulière trouve les lettres dans d'autres mots qui sont plus longs. Essayons cette autre version:

grep '\<[a-z]\{3,6\}\>' regex

Résultat:

- Liste des pages wiki: ArchLinux: https:/ /wiki.archlinux.org/ Gentoo: https:/ /wiki.gentoo.org/wiki/ Main_Page CentOS: http:/ /wiki.centos.org/ Debian: https:/ /wiki.debian.org/ Ubuntu: https:/ /wiki.ubuntu.com/

Cela ressemble déjà plus à ce que nous voulions. Ce que nous avons fait, c'est exiger que le mot commence juste avant la première lettre et se termine juste après la dernière.

  • Les caractères "{" et "}" avec deux nombres séparés par une virgule correspondent au caractère précédent répété le nombre de fois indiqué par les deux nombres.

Regardons maintenant un caractère premier de "+". C'est "*" et son fonctionnement est très similaire seulement qu'il correspond à n'importe quel nombre de caractères, y compris zéro. Autrement dit, il fait la même chose que le "+" mais ne nécessite pas que le caractère à sa gauche apparaisse dans le texte. Par exemple, essayons de rechercher les adresses qui commencent sur wiki et se terminent sur org:

grep 'wiki.*org' regex

Voyons le résultat:

ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/ wiki / Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/

Parfait.

Maintenant, le dernier personnage que nous allons voir. Le caractère "\" est utilisé pour échapper au caractère à sa droite afin qu'il perde sa signification particulière. Par exemple: Supposons que nous voulions localiser les lignes qui se terminent par un point. La première chose qui pourrait nous arriver pourrait être la suivante:

grep '.$' regex

Le résultat n'est pas ce que nous recherchons:

- Liste des pages wiki:
ArchLinux : https://wiki.archlinux.org/
Gentoo : https://wiki.gentoo.org/wiki/Main_Page
CentOS : http://wiki.centos.org/
Debian : https://wiki.debian.org/
Ubuntu : https://wiki.ubuntu.com/
- Dates de sortie: Arch Linux: 11-03-2002
Gentoo : 31/03/2002
CentOs: 14-05-2004 03:32:38
Debian : 16/08/1993
Ubuntu : 20/10/2004
Desde Linux Règlez.

C'est parce que le "." il correspond à n'importe quoi, de sorte que l'expression régulière correspond au dernier caractère de chaque ligne quel qu'il soit. La solution est la suivante:

grep '\.$' regex

Maintenant, le résultat est ce que nous voulons:

Desde Linux Règlez.

Game Over

Bien que le sujet des expressions régulières soit si complexe que je donnerais pour une série d'articles, je pense que je vous ai déjà donné assez de peine. Si vous avez réussi à arriver, félicitations. Et si vous avez lu tout cela en une seule fois, prenez une aspirine ou quelque chose comme ça, car ça ne peut pas être bon.

Pour l'instant c'est tout. Si vous aimez cet article, vous pouvez peut-être en écrire un autre. En attendant, je vous recommande d'essayer toutes les expressions régulières du terminal pour voir clairement comment elles fonctionnent. Et rappelez-vous: seul Chuck Norris peut analyser le HTML à l'aide d'expressions régulières.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Ezéchiel dit

    Que serait notre vie sans l'expression régulière?
    L'article est très utile, mais je le lirai petit à petit. Merci beaucoup.

    1.    Hexborg dit

      Merci pour le commentaire. Je ne crois toujours pas que mon article soit sorti. 🙂 Il est sorti avec une erreur, mais j'espère que c'est utile. 🙂

  2.   Scalbur dit

    Merci youssssssss! ..

    Il y a quelque temps, j'ai dû étudier un peu les expressions régulières .. .. Je vous remercie pour l'enseignement .. et le guide étape par étape pour apprendre chacune d'elles ..

    Très bien! .. .. Je vais avoir cette aspirine .. ee

    1.    Hexborg dit

      De rien. Courage et que les expressions régulières ne peuvent pas avec vous. 🙂

  3.   tanrax dit

    Post fantastique! Grand travail. Je me demande combien d'heures cela t'a pris 😀

    1.    Hexborg dit

      LOL !! La question est: combien d'heures m'aurait-il fallu si j'avais dit tout ce que j'avais l'intention de dire? Infini !! 🙂

  4.   Tammuz dit

    une chose que je ne savais pas, bon article!

    1.    Hexborg dit

      Je vous remercie. C'est un plaisir de le partager avec vous.

  5.   Helena_ryuu dit

    bonne explication. félicitations! vraiment utile!

    1.    Hexborg dit

      Je suis content que vous l'ayez trouvé utile. C'est donc un plaisir d'écrire

  6.   contre dit

    Cela devrait aller dans un endroit spécial. Comme le Featured mais qui ont une utilité très spécifique. Très utile, même si j'aimerais le voir appliqué à Vim.

    1.    Hexborg dit

      C'est une question de me poser. J'ai en tête quelques articles supplémentaires sur les expressions régulières. Et je pourrais parler de vim en eux. Cela diffère de ce que j'ai expliqué dans cet article. Il s'agit de continuer. 🙂

  7.   Fernando dit

    Bon!

    Votre article est très bon, c'est curieux, récemment (en ce moment) j'ai publié sur mon site une entrée que je préparais depuis quelques jours où j'ai rassemblé une liste de métacaractères pour les expressions régulières et quelques exemples. Et ça a été juste d'entrer DesdeLinux et voyez une entrée sur le même sujet !

    Si c'est une consolation, la mienne est BEAUCOUP PLUS DE CHATTE 😀

    Les regex sont certainement l'une des choses les plus utiles, je les utilise généralement pour découper la sortie des commandes et conserver la partie qui m'intéresse, puis interagir avec elle dans un script bash, par exemple. Je les ai aussi beaucoup utilisés à l'université, et ils sont d'une importance vitale dans la construction des compilateurs (dans la définition du lexicographique et des analyseurs). Bref, tout un monde.

    Salutations et très très bon travail.

    1.    Hexborg dit

      Merci beaucoup.

      J'ai aussi aimé votre article. C'est plus concis que le mien. Il peut servir de référence rapide. C'est une coïncidence que nous les ayons écrites en même temps. Vous pouvez voir que les gens s'intéressent au sujet. 🙂

  8.   Ellery dit

    Expressions régulières pour dummies =), maintenant c'est plus clair pour moi, au fait, une façon d'avoir la sortie avec couleur pour grep, est de créer un alias dans .bashrc alias grep = 'grep –color = always', au cas où cela fonctionne pour quelqu'un .

    salutations

    1.    Hexborg dit

      Vrai. C'est une autre façon de procéder. Merci pour la contribution. 🙂

  9.   KZKG ^ Gaara dit

    O_O… une contribution !!! O_O ...
    Merci beaucoup pour le post, j'attendais quelque chose comme ça depuis un moment lol, je le laisse ouvert pour le lire calmement chez moi sans tracas pour me concentrer lol.

    Merci pour l'article, je le fais vraiment

    1.    Hexborg dit

      Je savais que tu l'aimerais. LOL !! La vérité est que beaucoup de choses manquent, mais j'ai déjà une deuxième partie en tête. 🙂

  10.   Eliecer Tates dit

    Super article, si seulement je l'avais lu hier, le cours que j'ai donné aujourd'hui aurait été encore plus facile pour mes élèves!

    1.    Hexborg dit

      LOL !! Dommage que je sois en retard, mais content que ce soit utile. 🙂

  11.   LionToro dit

    Enfin !!!, super bien le post…. J'ai enfin trouvé quelque chose qui explique clairement les expressions régulières… ..

    1.    Hexborg dit

      Il existe de nombreuses informations, mais il est plus difficile de trouver quelque chose de facile à comprendre. Je suis content d'avoir comblé cette lacune. 🙂

      Salutations.

  12.   Shakespeare Rhodes dit

    Hé j'ai besoin d'aide, je dois faire une recherche dans / var / logs au format: yymmdd, et les logs sont comme ça 130901.log -130901.log, je dois rechercher tous ceux qui sont entre le 1er septembre et le 11 octobre, La seule chose que j'ai réussi à faire a été de supprimer tout le mois de septembre mais je ne sais pas comment faire la chaîne complète:

    ex: 1309 [0-3] me renvoie les logs du 1er au 30 septembre, mais je ne sais pas comment entrer aussi dans la même chaîne du 1er au 11 octobre.

    1.    Hexborg dit

      Le faire en utilisant des expressions régulières est un peu compliqué. Il me vient à l'esprit que quelque chose comme ça pourrait fonctionner:

      13(09[0-3]|10(0|1[01]))

      C'est une expression régulière étendue. Vous ne dites pas quel outil vous utilisez, donc je ne peux pas vous donner plus de détails.

      Quoi qu'il en soit, je pense que c'est le cas au lieu d'utiliser des expressions régulières, il vaut mieux le faire avec find. Vous pouvez essayer quelque chose comme ceci:

      trouver. -newermt '01 sep '-a! -newermt '11 oct '-print

      La chance. J'espère que cela peut vous aider.

  13.   Chipo dit

    Bonjour Tout d'abord, je tenais à vous remercier pour votre travail puisque cette page fait partie de mon "top 3" des meilleurs sites Linux.
    Je pratiquais et je ne savais pas pourquoi un RegExp sur un numéro de téléphone ne fonctionnait pas pour moi et c'était qu'il me manquait le "-E" (que j'ai réalisé grâce à ce post).
    Je voulais vous demander si vous ne connaissez pas un bon pdf ou un site où il y a des exercices sur RegExp, même si avec un peu d'imagination vous pouvez vous entraîner à les inventer vous-même.

    Salutations, Pablo.

  14.   Caly dit

    Très bien, je viens de tout lire, et oui maintenant j'ai besoin d'une aspirine 🙂

  15.   Oscar dit

    La meilleure explication que j'ai vue des expressions régulières. Mes remerciements à l'auteur pour le partage de ce travail.

    Salutations.

  16.   Alexadeur dit

    J'ai vraiment aimé une très bonne explication