0

我正在使用处理 1.0.6,它在 java 1.6 上运行。我有以下代码:

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

但它给出了错误:

unexpected char: '('

并突出显示我在上面粘贴的行。如果我把冒犯\(的东西换成另一个角色#,它就会抱怨这\-句话unexpected char: '-'。我应该能够在正则表达式引擎中使用文字,并且它可以在 C# 中使用!

4

4 回答 4

5

您还需要转义反斜杠:

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

该字符串表达式将被评估为:

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

这就是你想要的。

于 2009-09-26T20:00:23.950 回答
0

您必须通过在 Java 中的字符串前面加上 \ 来转义 \,所以

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

应该管用。

于 2009-09-26T20:01:48.733 回答
0

我认为你应该替换"\""\\"

Pattern pattern = Pattern.compile("func\\((.*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*)\\)");
于 2009-09-26T20:02:49.793 回答
0

在 Java 中,'(' 和 '-' 不是需要转义的字符。所以 '(' 表示 '\' 没有任何需要转义的字符,这就是错误发生的原因。对此的解决方案是反斜杠的 escepe :

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

如果您需要在 Java 和 C# 中使用 RegEx,也许您应该编写一个从一个交换到另一个的程序。

于 2009-09-26T20:05:35.653 回答