Regex NFA

Thompson-NFA erzeugen und seine aktiven Zustände Zeichen für Zeichen nachvollziehen.

Über dieses Tool

Erkunde, wie aus einem regulären Ausdruck ein nichtdeterministischer endlicher Thompson-Automat (NFA) wird. Wähle ein Beispiel oder gib Muster und Text ein. Prüfen wertet die gesamte Eingabe aus; Schritt startet oder erweitert den Ablauf, Zurücksetzen kehrt zu Zeichen null zurück. Eine leere Eingabe ist gültig. Muster und Eingabe unterstützen echte Zeilenumbrüche. Enter fügt einen Umbruch ein; Strg/Meta + Enter prüft den Text.

Hervorgehobene Kreise sind aktive Zustände, der einzelne Pfeil markiert den Start, ein Doppelkreis den akzeptierenden Zustand. Gestrichelte ε-Pfeile verbrauchen kein Zeichen. Nach jedem Schritt enthält die aktive Menge alle über ε-Pfeile erreichbaren Zustände. Akzeptiert wird erst nach der gesamten Eingabe, nicht schon bei einem passenden Präfix. Das markierte Zeichen ist als Nächstes dran; blasse Zeichen wurden bereits gelesen. Auf kleinen Bildschirmen scrollt das Diagramm innerhalb seines Bereichs.

Unterstützt: Unicode-Zeichen, ., |, (), *, +, ?, positive Klassen [abc] und [a-z], \d, \w, \s, maskierte Satzzeichen wie \. sowie \n, \r, \t, \f, \v. Der Punkt schließt Zeilentrenner aus; \d und \w verwenden ASCII-Ziffern und Wortzeichen, \s umfasst JavaScript-Leerraum. Beispielsweise akzeptiert colou?r sowohl color als auch colour. Die Eingabe ist echter Text, keine maskierte Zeichenkette.

Dieses Lernwerkzeug unterstützt keine Anker, negierten Klassen, gezählten oder nicht-gierigen Wiederholungen, Lookarounds, Flags oder Rückverweise. Grenzen: 128 Musterzeichen, 512 Eingabezeichen und 256 Zustände. Die Auswertung verfolgt erreichbare Zustände in O(Eingabelänge × Zustände), ohne Backtracking. Für Textsuche und Gruppen nutze Regex Tester. Siehe Russ Cox: Thompson-NFA-Aufbau und Simulation.

Muster, Eingabe und Beispielauswahl werden lokal gespeichert, auch ungültige Entwürfe. Ältere gespeicherte Eingaben bleiben lesbar. Reload und Navigation behalten die Eingaben; die Auswertung beginnt auf Anforderung neu. Zu große Entwürfe behalten die bisherige gespeicherte Kopie und zeigen eine Warnung. Lange Klassenbeschriftungen verbreitern nur die nötigen Graphspalten; große Graphen scrollen lokal auch per Tastatur.