Java Regex: unerwartete Zeichen: '('
Frage
Ich verwende Verarbeitung 1.0.6, die 1.6 auf Java läuft. Ich habe den folgenden Code:
Pattern pattern = Pattern.compile("func\((.*),(\-?[0-9\.]*),(\-?[0-9\.]*),(\-?[0-9\.]*)\)");
, aber es gibt den Fehler:
unexpected char: '('
und unterstreicht die Linie, die ich oben eingefügt. Wenn ich die säumige \(
in ein anderes Zeichen wie #
ändern, wirft sie der \-
sagen unexpected char: '-'
. Ich soll Literale der Lage sein, in einer Regex-Engine zu verwenden und es funktioniert in C #!
Lösung
Sie müssen die Schrägstriche entkommen auch:
"func\\((.*),(-?[0-9.]*),(-?[0-9.]*),(-?[0-9.]*)\\)"
Der String-Ausdruck wird das zu ausgewertet werden:
func\((.*),(-?[0-9.]*),(-?[0-9.]*),(-?[0-9.]*)\)
Und das ist, was Sie wollten.
Andere Tipps
Sie haben \ in Strings in Java zu entkommen, indem sie mit einem \ vorhergehenden, so
Pattern pattern = Pattern.compile("func\\((.*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*)\\)");
sollte funktionieren.
In Java ‚(‘ und ‚-‘.. Ist keine Flucht-gewünschten Zeichen So ‚(‘ bedeutet ‚\‘ ohne Flucht erforderlich Charakter, weshalb die Fehler auftreten Die Lösung hierfür ist die escepe, die zurück -slash auch:
Pattern pattern = Pattern.compile("func\\((.*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*)\\)");
Wenn Sie müssen RegEx verwenden in Java und C #, vielleicht sollten Sie ein Programm schreiben, das von einem zum anderen wechseln.
Ich glaube, Sie "\"
mit "\\"
ersetzen sollte
Pattern pattern = Pattern.compile("func\\((.*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*)\\)");