Java 拆分数学表达式

Java 拆分数学表达式,java,arrays,regex,split,Java,Arrays,Regex,Split,我分离一个字符串,它是一个数学表达式,我想分割每个数字、运算符和括号,并将它们发送到一个数组,这是我的代码: Scanner in = new Scanner(System.in); System.out.println("enter the expression :"); String infija = in.nextLine(); String separate[] = infix.split("(?=[-+*/%()])|(?<=[^-+*/%][-+*/])|(?<=[()]

我分离一个字符串,它是一个数学表达式,我想分割每个数字、运算符和括号,并将它们发送到一个数组,这是我的代码:

Scanner in = new Scanner(System.in);
System.out.println("enter the expression :");
String infija = in.nextLine();
String separate[] = infix.split("(?=[-+*/%()])|(?<=[^-+*/%][-+*/])|(?<=[()])");
预期结果是:

[(,2, /, 3,), +,(, 2, %, 1,)] 
有一个更简单的方法:

String separate[] = infix.split("\\b|(?<=\\D)(?=\\D)");
有一个更简单的方法:

String separate[] = infix.split("\\b|(?<=\\D)(?=\\D)");
这应该可以做到

    String myString= "(2/3)+(2%1)";
    String[] result = myString.split("(?<=[-+*/%()])|(?=[-+*/%()])");
    System.out.println(Arrays.toString(result));
这应该可以做到

    String myString= "(2/3)+(2%1)";
    String[] result = myString.split("(?<=[-+*/%()])|(?=[-+*/%()])");
    System.out.println(Arrays.toString(result));

你能给我举一个“m模表达式”的例子吗?这是一个例子:2/3+2%1所以预期结果是2/3+2%1你能给我举一个“m模表达式”的例子吗?这是一个例子:2/3+2%1所以预期结果是2/3+2%1汉克斯曼,但我还需要分开数学表达式的括号,我在你们的例子@Charlesspi check updatehaks man中没有看到括号,但我也需要分开数学表达式的括号,我在你们的例子@Charlesspi check updateQuestion中没有看到括号说“我想拆分每个数字、运算符和括号”. 可惜这个例子没有,所以这里有另一个例子:
2/(3+2)%1
。现在,这被拆分为
[2,/(,3,+,2,)%,1]
,这肯定是不对的。@Andreas现在的答案符合您的示例。问题是“我想拆分每个数字、运算符和括号”。可惜这个例子没有,所以这里有另一个例子:
2/(3+2)%1
。现在,这被拆分为
[2,/(,3,+,2,)%,1]
,这肯定是不对的。@Andreas回答现在迎合了你的例子。
    String myString= "(2/3)+(2%1)";
    String[] result = myString.split("(?<=[-+*/%()])|(?=[-+*/%()])");
    System.out.println(Arrays.toString(result));
    [(, 2, /, 3, ), +, (, 2, %, 1, )]