2 points par GN⁺ 2023-09-12 | 1 commentaires | Partager sur WhatsApp
  • Cet article explique comment calculer la différence et l’intersection de deux expressions régulières (regexes).
  • L’auteur montre le processus en fournissant des équations et des résultats tels que α < β = false, α = β = true, α > β = false, α & β = α ^ β = ∅, α - β = ∅.
  • L’article comprend aussi une brève introduction à la grammaire des expressions régulières suivante :
    • . correspond à n’importe quel caractère unique
    • xy est une concaténation : correspond à x puis à y
    • x|y est une alternative : correspond à x ou à y
    • x* est l’étoile de Kleene : correspond à x zéro fois ou plus
    • (xyz) est un groupement : traite xyz comme un seul élément
    • () est l’expression régulière vide et correspond à la chaîne vide
    • x+ est le plus de Kleene : correspond à x une fois ou plus
    • x? est optionnel : correspond éventuellement à x
    • x{n} est une puissance : concatène x à lui-même n fois
    • x{m,n} est une répétition : concatène x à lui-même de m à n fois
    • [a-z0-9] est un groupement : correspond à n’importe quel caractère unique du groupe
    • [^a-z0-9] est un groupement négatif : correspond à n’importe quel caractère unique qui n’appartient pas au groupe
    • \c est un échappement : correspond au caractère spécial c
    • \u001a est un échappement Unicode : correspond au caractère UTF-16 correspondant
    • a, b, c et tous les autres caractères correspondent à eux-mêmes.
  • L’article mentionne également des fonctionnalités non prises en charge, comme les ancres, les assertions de largeur nulle, les références arrière, l’extraction de sous-groupes, la recherche ou la correspondance partielle, ainsi que d’autres drapeaux modifiant le comportement.
  • Pour plus d’informations, l’auteur renvoie à la page GitHub de antimirov.
  • L’auteur de cet article est Eiríkr Åsheim, connu sous le nom de @d6 sur Twitter et Mastodon.

1 commentaires

 
GN⁺ 2023-09-12
Commentaires Hacker News
  • Cet article traite d’un outil permettant de calculer la différence et l’intersection entre deux expressions régulières (regexes).
  • Des utilisateurs ont signalé que l’outil pouvait se bloquer lorsqu’on tente de traiter des regexes complexes, par exemple pour filtrer les nombres divisibles par 3.
  • L’outil peut servir à générer une hiérarchie de classes de chaînes utile pour valider certains types de chaînes, comme des adresses e-mail ou des URL.
  • Un utilisateur a créé une démo web similaire montrant le processus d’analyse de regex sous différentes formes, puis la génération finale de code dans plusieurs langages.
  • Les expressions régulières ont été saluées pour leur capacité à encapsuler une théorie mathématique complexe dans une interface pratique, comparable à l’algèbre linéaire.
  • Certains utilisateurs ont été surpris par la complexité des regexes d’union et d’intersection générées par l’outil, et ont suggéré que produire une expression régulière minimale pourrait être un défi encore plus grand.
  • L’outil fournit une représentation graphique de l’automate fini déterministe (DFA) correspondant aux regexes données, ce que les utilisateurs ont jugé impressionnant.
  • Certains utilisateurs ont constaté que l’outil avait du mal à traiter des regexes pour des URL et des adresses e-mail syntaxiquement valides.
  • Il a été proposé de désactiver les suggestions automatiques dans le champ de saisie des regexes afin d’améliorer l’ergonomie sur mobile.
  • Un utilisateur a raconté avoir utilisé le concept d’intersection de regex pour écrire la logique de validation d’un paramètre « IP RegEx filter », ce qui a permis d’éviter les plaintes d’utilisateurs affirmant que le filtre ne fonctionnait pas.