2009-09-16 4 views
11

Ich bin interessiert in parsing regexes (nicht mit der Verwendung von Regexes für das Parsen zu verwechseln). Gibt es eine BNF für Java 1.6 RegexesWas ist die BNF für eine Regex (um einen vollständigen oder partiellen Parser zu schreiben)

(oder anderen Sprachen?) [Anmerkung: Es gibt eine similar older question ist, die nicht für Java zu einer Antwort geführt hat.]

EDIT Um zu erklären, warum ich tun muss Dies. Wir implementieren einen flachen Parser für die Verarbeitung natürlicher Sprache, der zuerst Tokens identifiziert und markiert. Diese werden dann mit einem Regex weiterverarbeitet. Ich muss wissen, welche Gruppen von der Regex erfasst wurden (der Automat erfasst nur die letzten jeder Klammer) und ich möchte auch die Regex mit Kommentaren kommentieren.

+0

Warum müssen Sie die Regex analysieren? – Steven

+14

Vielleicht implementiert er eine Regex-Engine? –

+1

mögliches Duplikat von [Regex Grammar] (http://stackoverflow.com/questions/265457/regex-grammar) –

Antwort

0

Es scheint nicht ein zu sein explizite Regex gemäß SO-Antworten.

6
+0

http://www.faqts.com/knowledge%5Fbase/view.phtml/aid/25718/fid/ 200 funktioniert nicht für mich – Makach

+0

@Makach: Ersetzen Sie '% 5F' durch' _'. SO scheint das in URLs zu ersetzen. – Gumbo

+0

Der faqts Link scheint tot zu sein. Der sfu.ca-Link stellt weder epsilon noch optional zur Verfügung und kann daher nicht alle regulären Sprachen angeben, die etwas so Komplexes wie eine Perl-Regex enthalten. – Recurse

2

ich einen sehe nicht speziell für Java 1.6; aber hier ist ein Anfang, die vielleicht haben Sie eine vollständige BNF aus bauen können:

http://www.users.pjwstk.edu.pl/~jms/qnx/help/watcom/wd/regexp.html#RegularExpressionBNF

... die Java 1.6-Dokumentation für Muster mit:

http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html

+0

Sie sollten sich auch darüber im Klaren sein, dass das JDK reguläre Ausdrücke unterstützt (siehe die in diesem Beitrag verlinkte Klasse Pattern) - stellen Sie sicher, dass Sie das Rad nicht neu erfinden. – RMorrisey

+0

Den letzten Kommentar ignorieren – RMorrisey

Verwandte Themen