2011-01-05 10 views
-1

Ich brauche Regex für die Erkennung von Namen, die [a-zA-Z_] sein können, dann . (Punkt) dann wieder [a-zA-Z_]. I ([a-zA-Z_]+) \.([a-zA-Z_]*) aber es funktioniert nicht. Hilfe ? Kann jemand mir Hacke geben, das in JFlex zu tun?Regex für Name Problem

+0

Beziehen Sie sich auf einen Literal-Punkt oder das Punkt-Metazeichen (entspricht allem außer einer neuen Zeile)? – 3lectrologos

+0

Meine letzte Bearbeitung war ** nur ** Code-Formatierung, der Backslash war vorhanden, aber unsichtbar. (obwohl der Schnitt * aussieht * als ob ich diesen umgekehrten Schrägstrich hinzugefügt hätte - das war ich nicht, ehrlich !!) –

+5

Was meinst du mit "funktioniert nicht"? erzeugt es einen Regex-Kompilierungsfehler? Kann es nicht mit etwas übereinstimmen, das es sollte, oder stimmt es mit etwas überein, das nicht sollte? –

Antwort

1

Ändern Regexp durch Punkt entkommen und Entfernen von Speicherplatz.

([a-zA-Z_]+)\.([a-zA-Z_]*)

weiterer Vorschlag fallen zu lassen() und temporäre Bezeichner verwenden

edit: von Ruf zunehmende Kommentierung regexp

+0

[Kann Regex Antworten enthalten mehr Details in der Erklärung?] (Http://meta.stackexchange.com/questions/73553/can-regex-answers-include-more-detail-in-explanation) – delnan

+0

Entschuldigung, danke :) –

+3

Auch wenn es funktioniert: ein Downvote von mir zum Posten (1) nur eine einfache Regexp ohne Erklärung * und * (2) nicht diese einzelne Zeile als Code zu formatieren. Aber ich kann meine Stimme ändern;) –

2

Sie müssen den Punkt zu entkommen: "\". - Andernfalls behandelt der Regex-Parser das reservierte "any char" -Symbol.

- EDIT - Nun, da wir wissen, dass der Punkt und damit das eigentliche Problem nicht entgangen: Sind Sie sicher, dass der Raum vor dem Punkt ist beabsichtigt?

+0

(es wurde entkernt - der Backslash zeigt sich, sobald Sie appy Code Formatierung) –

+0

@Andreas_D: mmm ... Sie haben Recht. Ich nehme an, dass das OP mehr Informationen liefern sollte. –

+0

Wenn dieses Muster aus dem ursprünglichen Code kopiert wird, dann, ja, ich wette, das Leerzeichen vor '\ .' ist der tatsächliche show stopper –