Les expressions régulières

Un tutoriel pour comprendre les bases des expressions régulières

Le problème exposé dans ce sujet a été résolu.

Tout le monde se secoue ! :D

J’ai commencé (il y a 13 heures) la rédaction d’un tutoriel au doux nom de « Regular Expression » et j’ai pour objectif de proposer en validation un texte aux petits oignons. Je fais donc appel à votre bonté sans limites pour dénicher le moindre pépin, que ce soit à propos du fond ou de la forme. Vous pourrez consulter la bêta à votre guise à l’adresse suivante :

Merci !

+0 -0

Bonjour,

Un bon document sur les bases des Regex, par contre je trouve qu’il manque des références à des outils permettant de les utiliser sur son pc, (sed, grep, …, pour windows je ne sais pas), certaines suites bureautiques (Libre office, Google Calc, … , mais pas MS office a moins de passer par les macros), et le fait que suivant les outils il peut y avoir différentes implémentations des regex.

Nota: Il ya une petite faute dans la note de la partie sur les ensembles

ce qui ser(ez)ait également le cas dans un ensemble SI et seulement SI il n’est pas entouré.

Hello,

Déjà personnellement je mettrais le titre en français. J’ai toujours entendu « regex » ou « expression régulière » de la part de francophones, parfois « regexp » mais rarement « regular expression ».

Pour compléter @kayou, le moteur de rechercher/remplacer par regex de Notepad++ (et ceux intégrés aux IDE) m’ont fait gagner des jours de boulot. La principale différence entre les outils au quotidien, c’est que le caractère de remplacement de capture change ($1 ou \1 généralement).

Bonjour, je plussoie le commentaire de Kayou. L'exemple ici nous montre comment détecter un email selon le langage … il existe de nombreuses variantes avec une plus ou moins grande complexité (avec Perl ou Ruby c’est plutôt hardcore).

Yarflam

Attention, les exemples sont particulièrement mauvais puisque ils ne sont pas comparables entre les langages. Chaque « implémentation » dans un langage teste une version simplifiée de ce que pourrait être un email, et chaque exemple a ses propres limites. Ceux avec Ruby et Perl sont complexes parce qu’ils sont plus complets, pas parce que le moteur de regex utilisé est plus complexe.

Bonjour,

Je me joins aux avis précédents. IL y a déjà une bonne base, mais il manque un certain nombre de détails.

JE parlerais quand même des différentes implémentations, car:

  • il y a des variations de syntaxe. Par exemple pour les groupes nommés, il existe (?'nom'), (?<nom>), (\p<nom>) et d’autres encore
  • Les assertions arrières et avant ne sont pas toujours supportées

Le risque c’est que quelqu’un essaie les regexp en JavaScript ou Java et soit perdu parce que tu as pris l’implémentation de python comme base, ou l’inverse…

Tu ne parles pas de ^, $, \b et \B dans les assertions, pourtant ils sont importants. Idem pour les modificateurs, les plus utiles (i, m et s) sont communs à à peu près toutes les implémentations.

Tu parles de la recherche, mais il faut aussi parler du remplacement. Là aussi avec quelques différences de syntaxe, p.ex. \1 vs. $1.

Si ça te dit, tu peux compléter avec des éléments plus avancés: les groupes conditionnels, le sticky/continuation flag, la réutilisation de groupes précédents, la récursion, etc. Mais en pratique c’est assez peu utilisé donc difficile de trouver de vrais exemples concrets.

Par ailleurs, il serait effectivement intéressant que tu présentes l’utilité des regexp en-dehors des langages de programmation. ON pense tous à grep bien sûr, mais pourquoi pas awk et/ou sed aussi ?

A noter que grep et sed ont été portés pour windows, et ça doit aussi être le cas pour awk.

Pour finir, change ce titre en anglais ! Ton tutoriel n’a pas à s’appeler "Regular expressions" quand une traduction largement acceptée (et même deux) existe, surtout que tu l’utilises ensuite.

+0 -0

Merci à tous les quatre pour votre retour

Un bon document sur les bases des Regex, par contre je trouve qu’il manque des références à des outils permettant de les utiliser sur son pc, (sed, grep, …, pour windows je ne sais pas), certaines suites bureautiques (Libre office, Google Calc, … , mais pas MS office a moins de passer par les macros), et le fait que suivant les outils il peut y avoir différentes implémentations des regex.

kayou

Je vais ajouter une section pour parler des utilisations potentiels dans un milieu professionnel parce que c’est vrai que les sites comme Rubular sont pratiques mais juste pour tester. Et merci pour la coquille (même s’il en reste sûrement d’autres ;) )

Attention, les exemples sont particulièrement mauvais puisque ils ne sont pas comparables entre les langages. Chaque « implémentation » dans un langage teste une version simplifiée de ce que pourrait être un email, et chaque exemple a ses propres limites. Ceux avec Ruby et Perl sont complexes parce qu’ils sont plus complets, pas parce que le moteur de regex utilisé est plus complexe.

SpaceFox

Tu parles des exemples du lien de @kayou ou de mon exemple d’entrainement à la fin du tuto ?

Et @QuentinC, effectivement je vais compléter ça dans la section d’utilisation plus proche du milieu professionnel pour introduire la substitution. Et le ^ et $ je les ai mentionné mais sans détailler, ça manque sûrement :D . Pour ce qui est de l’utilisation de grep et sed sous windows, c’est totalement possible avec WSL qui est très pratique.

+0 -0

Pour ce qui est de l’utilisation de grep et sed sous windows, c’est totalement possible avec WSL qui est très pratique.

Oui, on peut avec WSL, mais même pas besoin. A l’époque où je les avais récupérés (il y a plus de 10 ans), il y avait un projet de portage d’utilitaires UNIX sous windows, sauf erreur ça s’appelait GNU Win32. Ils avaient porté des tas de trucs utiles, dont grep et sed.

+0 -0

Déjà personnellement je mettrais le titre en français. J’ai toujours entendu « regex » ou « expression régulière » de la part de francophones, parfois « regexp » mais rarement « regular expression ».

SpaceFox

Souvent « expressions rationnelles » aussi, qui est une meilleure traduction.

genre cygwin ?

Non plus. Cygwin est une super usine à gaz qu’il ne vaut mieux pas installer… c’est limite pire que visual studio.

Et pour la manière d’appeler les regex ça dépend de la personne mais je pense que regex est suffisamment utilisé en français pour laisser ça

Personnellement je ne mettrais pas "regex" ou "regexp" comme titre, tout simplement parce que c’est une abréviation, et les abréviations n’ont pas leur place dans un titre. Donc, je choisirais entre "expressions rationelles", meilleure traduction mais moins courante, ou "expression régulière", moins bonne traduction mais beaucoup plus courante.

Après effectivement, quand on a l’habitude de les utiliser, on les appelle plutôt "regex"; mais ça reste une abréviation.

+1 -0
Ce sujet est verrouillé.