Java 将字符串转换为令牌

Java 将字符串转换为令牌,java,regex,string,Java,Regex,String,我正在尝试根据正则表达式将字符串拆分为令牌。但是split()给出了一个错误,表示非法转义序列 我正在尝试将以下字符串拆分为令牌 例如,以下字符串将转换为 1+2.0-3.145/4.0 这个 &这个 + - / 这是我写的正则表达式,但它有一些问题,并给出了错误 String[] tokens = expression.split("\\+\\-\\x\\/"); 我做错了什么 编辑: 我的最终目标是评估包含数学表达式的字符串并计算其结果。Android上是否有可用的库?将正则表达式更新

我正在尝试根据正则表达式将字符串拆分为令牌。但是split()给出了一个错误,表示非法转义序列

我正在尝试将以下字符串拆分为令牌

例如,以下字符串将转换为

1+2.0-3.145/4.0
这个

&这个

+ - /
这是我写的正则表达式,但它有一些问题,并给出了错误

String[] tokens = expression.split("\\+\\-\\x\\/");
我做错了什么

编辑:
我的最终目标是评估包含数学表达式的字符串并计算其结果。Android上是否有可用的库?

将正则表达式更新为
expression.split([-+/])

如果要使用数组,可以使用它:

 List<String> operators = new ArrayList<>();
 List<String> operands = new ArrayList<>();
 StringTokenizer st = new StringTokenizer(expression, "+-/", true);
 while (st.hasMoreTokens()) {
    String token = st.nextToken();

    if ("+-/".contains(token)) {
       operators.add(token);
    } else {
       operands.add(token);
    }
 }
List operators=new ArrayList();
列表操作数=新的ArrayList();
StringTokenizer st=新的StringTokenizer(表达式“+-/”,true);
而(st.hasMoreTokens()){
字符串标记=st.nextToken();
如果(“+-/”包含(令牌)){
操作符。添加(令牌);
}否则{
操作数。添加(标记);
}
}

将正则表达式更新为
expression.split([-+/])

如果要使用数组,可以使用它:

 List<String> operators = new ArrayList<>();
 List<String> operands = new ArrayList<>();
 StringTokenizer st = new StringTokenizer(expression, "+-/", true);
 while (st.hasMoreTokens()) {
    String token = st.nextToken();

    if ("+-/".contains(token)) {
       operators.add(token);
    } else {
       operands.add(token);
    }
 }
List operators=new ArrayList();
列表操作数=新的ArrayList();
StringTokenizer st=新的StringTokenizer(表达式“+-/”,true);
而(st.hasMoreTokens()){
字符串标记=st.nextToken();
如果(“+-/”包含(令牌)){
操作符。添加(令牌);
}否则{
操作数。添加(标记);
}
}

计算一个表达式是非常棘手的,比如它们的计算顺序。幸运的是,这个问题以前已经解决了:


@Roma Khomyshyn链接也很有用。

计算表达式时非常棘手,比如它们的计算顺序。幸运的是,这在以前已经解决了:


@Roma Khomyshyn链接也很有用。

但它不会按照字符串中这些特殊字符的确切顺序返回单独数组中的特殊字符。如果要在单独数组中使用特殊字符,则必须将源字符串滑动到时间。或者您可以使用此正则表达式
(?但它不会以字符串中这些特殊字符的确切顺序返回单独数组中的特殊字符。如果您希望在单独数组中使用特殊字符,则必须将源字符串滑到次。或者您可以使用此正则表达式
(?是否要使用
regex
调用
split
一次以获得两个数组?这将帮助您还是这将帮助您使用
regex
调用
split
一次以获得两个数组?这将帮助您还是这一步