Un BON tuto qui explique les regex (expressions régulières)

Bonjour,
Les expressions régulières sont ma bête noire depuis très longtemps. Quand je fait un script je suis obligé de m’arranger à bidouiller bêtement pour les éviter. Bêtement parce qu’il y a une part de paresse intellectuelle que justement j’ai envie de surmonter aujourd’hui.
En effet je dois faire un script shell qui devra couper dans un fichier une chaîne de caractère et les 4 lignes suivantes et, si je ne m’abuse, je vais avoir besoin d’une expression régulière à utiliser avec la commande Sed.
Ne me donnez pas la réponse surtout, je voudrais apprendre les expressions régulières et trouver par moi-même. Par contre, s’il vous plait, si vous connaissez des tutos où les regex sont expliquées le plus simplement possible, j’apprécierais beaucoup. J’en ai lu huit déjà, non seulement je ne comprends pas grand chose mais en plus maintenant ça se mélange. Si je suis con, je l’envisage, alors un bon tuto ne changera pas grand chose mais au moins je serai fixé.
D’avance un grand merci
PS: je ne serai pas contre des exercices avec difficulté croissante

J’ai malheureusement pas de lien magique, mais je compatit avec toi j’en croise plus que régulièrement et c’est parfois très galère à gérer car certains langages/software y vont avec leur particuliarité.

pour ton script c’est soit sed (relativement simple mais parfois un peu limité) soit awk (beaucoup plus puissant mais encore plus éprouvant :confused: ), pour travailler avec des fichiers de configuration ou du texte il y a aussi Perl qui se débrouille bien mieux que Bash.

J’en ai profité pour rediriger dans Pause café, la demande n’est pas étroitement lié à Debian et sera bien plus à sa place avec un bon kawa à la main ici :wink:

Normal :slight_smile: les regexp estnatif dans Perl, c’est le premier a avoir été dans ce cas, et peut être même le seul à l’être, car pour les autres ce sont des bibliotheques à ajouter.

Il n’y a pas de liens magique en fait, car c’est toute une documentation.
Mastering regular expression chez O’Reilly est très bien; tout ou presque s’y trouve.
Sinon j’utilise des sites permettant de calculer mes expressions et de les tester facilement, et le meilleurs que j’ai pu trouver:

1 J'aime

Ça ?

Puis, pour appliquer, ceci ?

Et pour « tricher », cela ?

https://www.autoregex.xyz/

Bonjour petitchat !

J’ai le même problème que toi. Mais j’ai trouvé ce petit livre qui explique de façon très didactique et progressive ce sujet : Les expressions régulières par l'exemple - Vincent Fourmond - Librairie Eyrolles
Il fait 126 pages et il est très bien écrit !

Sylvian

Merci pour ton lien, le bouquin semble intéressant. Sais-tu s’il comporte des exercices corrigés ?

Salut, merci pour toutes vos réponses. Vous m’avez donné pas mal de liens, je vais les regarder attentivement ce week end. C’est un sujet qui vaut le peine qu’on prenne le temps.
Je me souviens d’un exercice en fac, l’énoncé c’était un classique: « décrire une adresse IPV4 en expression régulière », je n’ai rien compris lol.
Concernant mon script par contre je m’en suis sortit encore plus simplement qu’avec un sed + regex, pour couper une portion de texte j’ai utilisé grep, head et tail.
Je vais considérer le sujet comme résolu du coup. Miaou.

J’utilise le simulateur re-builder de Emacs : un document dans un buffer et l’expression régulière dans un autre. Les chaînes reconnues apparaissent en couleur.
Je trouve ça très pédagogique et j’apprends à maîtriser les expressions régulières petit à petit.

Oui, le livre comporte des exercices.

1 J'aime

Tu as très bien résumé et exposé ton réel problème.
Ce n’est pas un ‹ bon tuto ›, ou un ‹ bon livre › dont tu as besoin, mais une bonne volonté d’apprendre, de retrousser les manches.

A quelle échéance ? Aujourd’hui ? le mois prochain ? Dans un an ?
Pourquoi ne pas commencer par l’exemple très simple que tu proposes ? Tu attends vraiment de commander/recevoir lire un livre pour ça ?
Je n’y crois pas. Tu ne fais que repousser les échéances.

Le regex est bourré de pièges jamais explicitement décrits, à commencer par le premier:
il n’y a pas un regex universel, mais différents types de regex qui ne sont pas nécessairement compris d’une commande à l’autre, selon leurs options.
Exemple: le Regex PERL est particulier car interprète certaines fonctions non comprises par le Regex de base, le plus portable.

Ne pas confondre le globbing de bash, et le Regex:
Exemple: l’expression {1,5} en bash n’a rien à voir avec {1,5} en regex !

Ce n’est pas un livre exclusivement focalisé sur le Regex qui te démontrera ça, mais l’expérience progressive.

Il y a en gros 3 niveaux de difficultés en regex:
1] le béaba, du regex simple et le plus couramment utilisé à 80%.
2] un niveau plus avancé, pas trivial si peu couramment utilisé;
3] un niveau ‹ expert › avec notion de lookahead, lookbehind, très vite imbitable si utilisé une fois par an.

Mon avis… commence par le début avec des exemples très simples.
Le ‹ meilleur › tuto pour l’un n’est pas le ‹ meilleur › tuto pour un autre.
Le ‹ meilleur tuto › pour toi est celui que tu te feras par expérience personnelle progressive.

1 J'aime

mercredi dans ma boite aux lettres :stuck_out_tongue: Je te ferai un retour du contenu. Je mise beaucoup sur les exercices et les exemples.

Parfait. En attendant la livraison, ça va te laisser du temps pour perfectionner la maîtrise de sed qui est la commande la plus couramment utilisée pour directement modifier un fichier associé à du Regex.
Bon courage.

Un autre outil sympa pour s’entraîner au regex: kate (de KDE).

Exemple: recherche / suppression des balises code d’un fichier html
expression regex: <[^>]*>
ksnip_20230123-221227

1 J'aime

Un outil pour débugger les REGEX, mais surtout visualiser ce qu’elles font (si ! si!) https://www.debuggex.com/

Un exemple avec une REGEX qui vérifie si tu as saisi un code postal français : ^\d{5}$

Et une « cheatsheet » :

image

En espérant que livre soit bien livré.

Avec un bémol déjà exprimé…:
➢ le regex et ses variantes, est une chose;
➢le regex correctement associé à une commande (sed/awk/grep etc etc) en est une autre.
Toujours un petit décalage à prévoir entre théorie et pratique…

C’est aussi pourquoi il existe des tonnes d’outils de débuggage.
Il n’y a pas que sed/awk/grep, mais la plupart des langages : php, javascript, java, python, ruby…

Mais aussi gedit, nano, vim bref les éditeurs

Ou tout simplement gedit ou les suites office…

image

1 J'aime

Salut, désolé j’ai un peu déserté ce sujet, je l’avais oublié. En fait j’ai temporairement mis mon problème de regex de coté, d’autres priorités. Mais j’ai reçu le bouquin, j’ai eu le temps de bien le lire et faire pas mal d’exercices.
@Verner: Le bouquin est excellent, surtout il va me faire gagner énormément de temps, c’est à dire au moins acquérir le niveau 1 dont tu parles dans ton post précédant (les 80% les plus utiles). On n’oublie ce qu’on utilise pas, il faudrait que je trouve un moyen de faire des regex régulièrement.
Au plaisir de vous lire, miaou

1 J'aime

Je n’en doute pas, tu n’es plus à un moins près pour faire ton script.

Ha ! ha ! ça va plus vite comme ça !

Haha excellent !
Merci pour vos réponses. Moi ça me fascine les regex, le potentiel logique qu’elles ont. Par contre j’en utilise rarement donc je reste nul :slight_smile: