Question

J'utilise le traitement 1.0.6, qui fonctionne sur Java 1.6. Je le code suivant:

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

mais il donne l'erreur:

unexpected char: '('

et met en évidence la ligne que je collais ci-dessus. Si je change le \( incriminé à un autre personnage comme #, il se plaint de la \- dire unexpected char: '-'. Je devrais être en mesure d'utiliser littéraux dans un moteur regex et il fonctionne en C #!

Était-ce utile?

La solution

Vous devez les backslashs aussi:

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

Cette expression de chaîne sera l'objet d'une évaluation à:

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

Et c'est ce que vous vouliez.

Autres conseils

Vous devez échapper \ dans les chaînes en Java par ce qui précède avec un \, donc

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

devrait fonctionner.

En Java « ( » et « - ».. N'est pas un caractère d'échappement-requis Donc « ( » signifie « \ » sans caractère d'échappement-requis qui est la raison pour laquelle l'erreur se produit La solution est le escepe que de retour -slash aussi:

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

Si vous devez utiliser RegEx dans Java et C #, peut-être vous devriez écrire un programme qui échangent de l'un à l'autre.

Je pense que vous devriez remplacer "\" avec "\\"

Pattern pattern = Pattern.compile("func\\((.*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*)\\)");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top