表达式数组的拆分字符串

时间:2015-04-11 14:46:45

标签: java regex

我试图将字符串拆分为数字和运算符数组,例如从["2.1" , "+" , "(", "sin" , "2" , ")"]获取"2.1+(sin 2)"

如何正确解决这个问题?我尝试使用java.util.regex.Pattern,但我不知道如何提取所有合适的元素。

1 个答案:

答案 0 :(得分:0)

您可以进行匹配或拆分。这是通过拆分来实现的。

String s = "2.1+(sin 2)";
String parts[] = s.split("\\s+|(?=[^.\\w\\s])|(?<=[^.\\w\\s])");
System.out.println(Arrays.toString(parts));

通过使用Pattern和Matcher类进行匹配。

String s = "2.1+(sin 2)";
ArrayList<String> lst = new ArrayList<String>(); 
Matcher m = Pattern.compile("\\d+(?:\\.\\d+)?|[a-zA-Z]+|[^\\s\\w\\.]").matcher(s);
while(m.find())
{
    lst.add(m.group());
}
System.out.println(lst);

输出:

[2.1, +, (, sin, 2, )]