Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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
Java正则表达式算术运算符出现_Java_Regex - Fatal编程技术网

Java正则表达式算术运算符出现

Java正则表达式算术运算符出现,java,regex,Java,Regex,我对Java中的正则表达式有点问题。我尝试生成正则表达式,它将匹配算术运算。 这是我的正则表达式: [\d]*[-+*/^][\d]*([-+*/^][\d]*)* 它应该接受像34+45*5^7/3-5这样的字符串,但它也接受像34+-/^34这样的字符串。我不知道这个正则表达式出了什么问题 对不起,我的英语不好。星星接受0到n倍的表达式。在您的情况下,可以将一个数字后跟一个运算符,再后跟一个可选数字(因为有星号),该可选数字后跟另一个运算符,因此如果可选数字未命中正则表达式,则仍然匹配。

我对Java中的正则表达式有点问题。我尝试生成正则表达式,它将匹配算术运算。 这是我的正则表达式:

[\d]*[-+*/^][\d]*([-+*/^][\d]*)*
它应该接受像34+45*5^7/3-5这样的字符串,但它也接受像34+-/^34这样的字符串。我不知道这个正则表达式出了什么问题


对不起,我的英语不好。

星星接受0到n倍的表达式。在您的情况下,可以将一个数字后跟一个运算符,再后跟一个可选数字(因为有星号),该可选数字后跟另一个运算符,因此如果可选数字未命中正则表达式,则仍然匹配。 尝试使用+而不是*。
+至少需要一次出现。

星号接受表达式的0到n倍。在您的情况下,可以将一个数字后跟一个运算符,再后跟一个可选数字(因为有星号),该可选数字后跟另一个运算符,因此如果可选数字未命中正则表达式,则仍然匹配。 尝试使用+而不是*。
+至少需要一次出现。

请尝试此正则表达式,如果有任何问题,请告诉我:-

[\d]+([\-\+\*/][\d]+)*

尝试此正则表达式,如果有任何问题,请告诉我:-

[\d]+([\-\+\*/][\d]+)*

您需要将一些
*
(零个或多个)替换为
+
(一个或多个):
\d+([-+*/^]\d+)*
。记得在Java字符串文本中加倍
\
“\\d+([-+*/^]\\d+*”
您需要将一些
*
(零个或多个)替换为
+
(一个或多个):
\d+([-+*/^]\d+*
。当使用Java字符串文字时,请记住加倍
\
“\\d+([-+*/^]\\d+*”
我调整了您的正则表达式。我使用这个([\\d]+[\-\+\*/\\^][\\d]+)+,它可以工作。谢谢,那不行<代码>1+5+7将不匹配,因为重复组必须以数字开头和结尾。您还删除了
^
。除此之外,
\d
不需要在字符类中(
[]
),并且
-
+
*
不需要在字符类中转义。它应该是
\d+([-+*/^]\d+*
是的,这将需要偶数个操作数,感谢您指出它+1如果您不使用转义序列,您将如何区分[1-9]和[+-/]呢?将
-
放在第一位或最后一位,OP将其放在第一位,这样它就可以工作了。对于
^
,也一样,它只有在放在第一位时才有特殊意义,所以不把它放在第一位,就不必逃避
+
*
,等等。在字符类中,在任何位置都没有特殊意义,因此它们永远不必在那里转义。我修改了您的正则表达式。我使用这个([\\d]+[\-\+\*/\\^][\\d]+)+,它可以工作。谢谢,那不行<代码>1+5+7将不匹配,因为重复组必须以数字开头和结尾。您还删除了
^
。除此之外,
\d
不需要在字符类中(
[]
),并且
-
+
*
不需要在字符类中转义。它应该是
\d+([-+*/^]\d+*
是的,这将需要偶数个操作数,感谢您指出它+1如果您不使用转义序列,您将如何区分[1-9]和[+-/]呢?将
-
放在第一位或最后一位,OP将其放在第一位,这样它就可以工作了。对于
^
,也一样,它只有在放在第一位时才有特殊意义,所以不把它放在第一位,就不必逃避<代码>+,
*
等。在字符类中,在任何位置都没有特殊意义,因此它们永远不必在那里转义。