正则表达式非法逃脱字符

时间:2014-03-31 00:01:19

标签: java regex escaping character

String[] tokens = infix.split("[0-9]*([.][0-9]+)? | sin | cos | tan | log | \^ | sqrt | \( | \) | \+ | \- | \* | \/");

当我编译它时,它说我在" \ ^"有一个非法逃脱字符,我试图告诉它忽略特殊字符" ^&#34 ;并查看" ^"作为一个实际的字符串,我没有正确的语法吗?

1 个答案:

答案 0 :(得分:2)

在java中,你需要逃避转义。基本上,您必须使用 double 反斜杠来表示字符串文字:

String[] tokens = infix.split("[0-9]*([.][0-9]+)? | sin | cos | tan | log | \\^ | sqrt | \\( | \\) | \\+ | \\- | \\* | /");

请注意,您转义java中的正斜杠(正则表达式与否)。

顺便说一下,你的正则表达式可以简化为:

String[] tokens = infix.split("[0-9]*([.][0-9]+)? | sin | cos | tan | log | sqrt | [()+*-] | /");