String[] tokens = infix.split("[0-9]*([.][0-9]+)? | sin | cos | tan | log | \^ | sqrt | \( | \) | \+ | \- | \* | \/");
当我编译它时,它说我在" \ ^"有一个非法逃脱字符,我试图告诉它忽略特殊字符" ^&#34 ;并查看" ^"作为一个实际的字符串,我没有正确的语法吗?
答案 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 | [()+*-] | /");