Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解析x+y以便在Java中得到x,+,y(一个数组)?_Java_Regex - Fatal编程技术网

如何解析x+y以便在Java中得到x,+,y(一个数组)?

如何解析x+y以便在Java中得到x,+,y(一个数组)?,java,regex,Java,Regex,我有一个字符串,比如:x+y我想得到一个包含元素的数组:x,+,y没有空格而不是+,如果我使用-,/,*它们也应该可以工作。我尝试了上面的代码,但是由于+和/或*,这会产生错误。它将它们作为正则表达式的一部分 我怎样才能做到这一点?请帮忙 String s = " x + y "; String[] sArr = s.split("\\s*-|+|*|/\\s*"); 输出:x:+:y 第一个备选方案: String s = " x + y - z / x * y "; s = s

我有一个字符串,比如:x+y我想得到一个包含元素的数组:x,+,y没有空格而不是+,如果我使用-,/,*它们也应该可以工作。我尝试了上面的代码,但是由于+和/或*,这会产生错误。它将它们作为正则表达式的一部分

我怎样才能做到这一点?请帮忙

String s = " x  +  y  ";
String[] sArr = s.split("\\s*-|+|*|/\\s*"); 
输出:x:+:y

第一个备选方案:

String s = " x  +  y - z / x * y ";
s = s.replaceAll("\\s+", "");
String[] sArr = s.split("((?<=[\\+\\-\\*/])|(?=[\\+\\-\\*/]))");
System.out.println(Arrays.toString(sArr));
在这两种情况下,输出:

String[] sArr = s.split("\\s*");
System.out.println(Arrays.toString(sArr));
如果您不想在输出中使用运算符,可以这样做

[x, +, y, -, z, /, x, *, y]
输出:

String[] sArr = s.split("\\s*[-,+,*,/]\\s*");
System.out.println(Arrays.toString(sArr));

你试过在空白处分开吗?s、 拆分\\s*。split的参数告诉您要保留的元素之间应该有什么。由于您希望保留+,因此它不应该是split正则表达式的一部分,除非您正在执行一些非常棘手的操作。s.replaceAll\\s,.split如果输入字符串之间不包含空格,则代码将无法工作。应该有一些分隔符来分隔一个单词和另一个单词。在这个问题上,OP显然要求按空间分开。否则,如果您不知道分隔符是什么,那么如何分隔像x+25+50这样的字符串?是的,OP可能希望使用运算符符号分隔字符串。
String[] sArr = s.split("\\s*[-,+,*,/]\\s*");
System.out.println(Arrays.toString(sArr));
[x, y, z, x, y]