2 Punkte von GN⁺ 2023-09-12 | 1 Kommentare | Auf WhatsApp teilen
  • Dieser Artikel behandelt, wie sich die Differenz und die Schnittmenge zweier regulärer Ausdrücke (Regexes) berechnen lassen.
  • Der Autor zeigt den Prozess anhand von Gleichungen und Ergebnissen wie α < β = false, α = β = true, α > β = false, α & β = α ^ β = ∅ und α - β = ∅.
  • Außerdem enthält der Artikel eine kurze Einführung in die folgende Grammatik regulärer Ausdrücke:
    • . passt auf ein beliebiges einzelnes Zeichen
    • xy ist Konkatenation: passt auf x und danach auf y
    • x|y ist Alternative: passt auf x oder y
    • x* ist der Kleene-Stern: passt 0-mal oder öfter auf x
    • (xyz) ist Gruppierung: behandelt xyz als einzelnes Element
    • () ist der leere reguläre Ausdruck und passt auf die leere Zeichenkette
    • x+ ist das Kleene-Plus: passt 1-mal oder öfter auf x
    • x? ist optional: passt optional auf x
    • x{n} ist Potenz: verkettet x n-mal mit sich selbst
    • x{m,n} ist Wiederholung: verkettet x zwischen m- und n-mal mit sich selbst
    • [a-z0-9] ist Gruppierung: passt auf ein beliebiges einzelnes Zeichen aus der Gruppe
    • [^a-z0-9] ist Negation einer Gruppe: passt auf ein beliebiges einzelnes Zeichen, das nicht in der Gruppe enthalten ist
    • \c ist Escaping: passt auf das Sonderzeichen c
    • \u001a ist ein Unicode-Escape: passt auf das entsprechende UTF-16-Zeichen
    • a, b, c stehen für alle übrigen Zeichen, die auf sich selbst passen.
  • Der Artikel erwähnt außerdem nicht unterstützte Funktionen wie Anker, Zero-Width Assertions, Backreferences, das Extrahieren von Untergruppen, Suche oder partielle Übereinstimmungen sowie weitere Flags, die das Verhalten verändern.
  • Für weitere Informationen verweist der Autor auf die GitHub-Seite von antimirov.
  • Der Autor dieses Artikels ist Eiríkr Åsheim, auf Twitter und Mastodon als @d6 bekannt.

1 Kommentare

 
GN⁺ 2023-09-12
Hacker-News-Kommentar
  • Dieser Artikel diskutiert ein Tool zur Berechnung der Differenz und Schnittmenge zweier regulärer Ausdrücke (regexes).
  • Nutzer berichteten, dass das Tool hängen bleiben kann, wenn es versucht, komplexe regexes zu verarbeiten, etwa zum Filtern von Zahlen, die durch 3 teilbar sind.
  • Das Tool kann verwendet werden, um eine Hierarchie von String-Klassen zu erzeugen, die nützlich ist, um bestimmte Arten von Strings wie E-Mail-Adressen oder URLs zu validieren.
  • Ein Nutzer erstellte eine ähnliche Web-Demo, die zeigt, wie regex in verschiedene Formen geparst und schließlich Code in unterschiedlichen Sprachen ausgegeben wird.
  • Reguläre Ausdrücke wurden dafür gelobt, komplexe mathematische Theorie in eine praktische Schnittstelle zu bündeln, ähnlich wie die lineare Algebra.
  • Einige Nutzer waren überrascht von der Komplexität der vom Tool erzeugten Vereinigungs- und Schnittmengen-regexes und schlugen vor, dass die Erzeugung minimaler regulärer Ausdrücke eine noch größere Herausforderung sein könnte.
  • Das Tool bietet eine grafische Darstellung des Deterministic Finite Automaton (DFA) für gegebene regexes, was von Nutzern als beeindruckend bewertet wurde.
  • Einige Nutzer stellten fest, dass das Tool Schwierigkeiten hatte, regexes für syntaktisch gültige URLs und E-Mail-Adressen zu verarbeiten.
  • Es wurde vorgeschlagen, die Auto-Vervollständigung im regex-Eingabefeld zu deaktivieren, um die Bedienbarkeit auf mobilen Geräten zu verbessern.
  • Ein Nutzer teilte seine Erfahrung damit, das Konzept der regex-Schnittmenge zum Schreiben von Validierungslogik für die Einstellung "IP RegEx filter" zu verwenden, was half, Nutzerbeschwerden darüber zu vermeiden, dass der Filter nicht funktioniere.