2017-01-23 3 views
0

Ich muss ein NFA aus einem regulären Ausdruck erstellen und dann durch einen Text gehen und übereinstimmende Muster finden.Umgang mit Kurzzeichen in regulären Ausdrücken

Ich benutzte Konstruktion Thompson die NFA zu bauen, wenn der Ausdruck nur die alphabetischen Zeichen enthält, *, | und . (Cleene Stern, Vereinigung und Verkettung respectively).

Aber wie mit Kurzschrift-Zeichen in dem regulären Ausdruck zu behandeln wie \d Zufallszahl 0-9 und \a sein kann - zufällige Buchstaben?

Ich kann es einfach im regulären Ausdruck als (0|1|2|3|4|5|6|7|8|9) ersetzen, aber ich bezweifle stark, dass das ist, was ich tun soll.

+0

können Sie bitte etwas Code hinzufügen, damit wir Ihnen bei Ihrem Problem helfen können? – CodeChanger

+0

Nicht gerade .. – user7456173

+0

Aber ich wurde von diesem [link] (https://swtch.com/~rsc/regexp/regexp1.html) geführt – user7456173

Antwort

0

Denken Sie daran, dass in einem NFA ein Übergang vom Zustand A zum Zustand B, der eines von N Zeichen akzeptiert, in Ordnung ist. Es ist nur ein kurzer Weg, N Übergänge vom Zustand A zum Zustand B zu schreiben, die jeweils 1 Zeichen akzeptieren.

Also für die Zwecke Ihrer Übersetzung, können Sie einfach behandeln \d als ein einzelnes Zeichen. Wenn es nötig ist, können Sie es nach der Tat in 10 separate Übergänge erweitern.