Pregunta

Estoy utilizando procesamiento 1.0.6, que funciona con Java 1.6. Tengo el siguiente código:

Pattern pattern = Pattern.compile("func\((.*),(\-?[0-9\.]*),(\-?[0-9\.]*),(\-?[0-9\.]*)\)");

pero da el error:

unexpected char: '('

y pone de relieve la línea pegué arriba. Si cambio la \( ofensor a otro personaje como #, se queja de la \- diciendo unexpected char: '-'. Debería ser capaz de utilizar literales en un motor de expresiones regulares y funciona en C #!

¿Fue útil?

Solución

Es necesario para escapar de las barras invertidas también:

"func\\((.*),(-?[0-9.]*),(-?[0-9.]*),(-?[0-9.]*)\\)"

Esa expresión de cadena será el ser evaluada para:

func\((.*),(-?[0-9.]*),(-?[0-9.]*),(-?[0-9.]*)\)

Y eso es lo que quería.

Otros consejos

Tienes que escapar \ en las cadenas en Java por lo precede con un \, de modo

Pattern pattern = Pattern.compile("func\\((.*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*)\\)");

debería funcionar.

En Java '(' y '-'.. No es un carácter de escape-requerido Así '(' significa '\' sin ningún carácter de escape-requerido es por eso que se produce el error La solución a esto es el escepe que volver -slash también:

Pattern pattern = Pattern.compile("func\\((.*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*)\\)");

Si es necesario utilizar expresiones regulares en Java y C #, tal vez debería escribir un programa que cambiar de una a otra.

Creo que se debe reemplazar con "\" "\\"

Pattern pattern = Pattern.compile("func\\((.*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*)\\)");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top