字符串拆分限制器

时间:2014-12-29 13:13:52

标签: java regex split

我是Java新手。有一个字符串“a + b - c * d / e”,我想得到a,b,c,d,e

但它失败了(java.util.regex.PatternSyntaxException)

    String str = "a + b - c * d / e";
    String [] value = str.split("+-*/");

提前致谢。

1 个答案:

答案 0 :(得分:1)

根据以下正则表达式拆分输入。

String str = "a + b - c * d / e";
String[] value = str.split("\\s*[-+*/]\\s*");
System.out.println(Arrays.toString(value));

输出:

[a, b, c, d, e]

\\s*匹配零个或多个空格。 [-+*/]匹配给定列表中的单个字符。我建议你把-放在字符类的开头或结尾处,因为字符类中间的-有时会像范围操作符一样。

<强>更新

如果您希望程序只返回操作符,请尝试此操作。

    String str = "1.23 + 3 - 5 * 4 / 5.7";
    String[] value = str.split("\\s*\\d+(?:\\.\\d+)?\\s*");
    ArrayList<String> list = new ArrayList<String>();
    for(String s: value){
        if(!s.equals("")) list.add(s);
    }
   System.out.println(list);

输出:

[+, -, *, /]