String.split()处于元字符+

我正在制作一个简单的程序来处理方程式的String输入中的方程式当我运行它时,我得到一个例外,因为我试图用“+”替换“+”所以我可以分割字符串在空间。 我应该如何使用

字符串replaceAll方法替换这些特殊字符? 以下是我的代码

线程“main”中的exceptionjava.util.regex.PatternSyntaxException:在索引0附近悬挂元字符’+’+ ^

public static void parse(String x){ String z = "x^2+2=2x-1"; String[] lrside = z.split("=",4); System.out.println("Left side: " + lrside[0] + " / Right Side: " + lrside[1]); String rightside = lrside[0]; String leftside = lrside[1]; rightside.replaceAll("-", " -"); rightside.replaceAll("+", " +"); leftside.replaceAll("-", " -"); leftside.replaceAll("+", " +"); List rightt = Arrays.asList(rightside.split(" ")); List leftt = Arrays.asList(leftside.split(" ")); System.out.println(leftt); System.out.println(rightt); 

replaceAll接受正则表达式作为其第一个参数。

+是一个特殊字符,表示一个或多个出现的量词。 因此,应该转义它以指定文字字符+

 rightside = rightside.replaceAll("\\+", " +"); 

(字符串是不可变的,因此有必要将变量赋给replaceAll的结果);

另一种方法是使用一个删除元字符状态的字符类 :

 rightside = rightside.replaceAll("[+]", " +"); 

最简单的解决方案是使用使用非正则表达式String文字的replace方法:

 rightside = rightside.replace("+", " +"); 

我和regex = "?"有类似的问题regex = "?" 。 它适用于在正则表达式中具有某些含义的所有特殊字符。 因此,您需要将"\\"作为正则表达式的前缀。

 rightside = rightside.replaceAll("\\+", " +"); 

String#replaceAll期望regex作为输入,而+是不正确的模式, \\+将是模式。 rightside.replaceAll("\\+", " +");