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 #!

War es hilfreich?

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\\.]*)\\)");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top