Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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正则表达式-在一个数学运算符之后删除sting的剩余部分_Java_Regex_Replaceall - Fatal编程技术网

Java正则表达式-在一个数学运算符之后删除sting的剩余部分

Java正则表达式-在一个数学运算符之后删除sting的剩余部分,java,regex,replaceall,Java,Regex,Replaceall,我需要一个正则表达式,它将删除运算符后面的剩余字符。 用户传入一个等式,例如55-6或55+6或(*/) 只需要一个正则表达式,它可以一直读取到其中一个字符被命中,然后删除其余的字符 我算出了除法“/”:x=input.replaceAll(“/[^/]*$”,”) 我试着遵循同样的惯例,但它不起作用 我看了其他一些问题,但它们都依赖于了解具体的角色。在这种情况下,我不知道用户将传入哪个操作符 提前谢谢。您可以将它们合并到一个正则表达式中,尽管它有点混乱 对于除法,可以使用此输入替换它 之后的每

我需要一个正则表达式,它将删除运算符后面的剩余字符。 用户传入一个等式,例如55-6或55+6或(*/)

只需要一个正则表达式,它可以一直读取到其中一个字符被命中,然后删除其余的字符

我算出了除法“/”:
x=input.replaceAll(“/[^/]*$”,”)
我试着遵循同样的惯例,但它不起作用

我看了其他一些问题,但它们都依赖于了解具体的角色。在这种情况下,我不知道用户将传入哪个操作符


提前谢谢。

您可以将它们合并到一个正则表达式中,尽管它有点混乱

对于除法,可以使用此输入替换它

之后的每一个都应该是不同的,因为符号是在正则表达式中使用的。因此,你必须在它们前面加一个“\”来逃避它们。对于其他三个字符,请将第一个字符替换为\*、\+、\-。

此操作有效:

x = input.replaceAll("[-|\\+|\\*|/].*$", "");
此表达式查找“-”或“+”或“”或“/”,然后使用删除后面的所有内容。$管道用于分隔值

+和*字符实际上意味着正则表达式,因此必须在使用\之前使用\来表示您需要该字符本身


希望详细的解决方案有帮助

它可以很好地处理“/”,但不能处理其他任何x=input.replaceAll(“-.$”,”);x=input.replaceAll(“\\+.*$”,“”);x=input.replaceAll(“\*.$”,“”);x=input.replaceAll(“/.*$”,“”);这就是我在你的评论之后所说的。仅适用于“/”我觉得|(垂直线)符号是多余的,或者您想使用()(圆括号)而不是[](方括号)。我遗漏了什么吗?用括号[],你可以不用“|”。对于括号(),它似乎只有在有“|”时才起作用。当括号[]和管道|放在一起时,我发现阅读和理解起来更容易。它可能是多余的,但很容易阅读。但是在java中,除了“a”和“b”之外的“[a | b]”不也会匹配“|”吗?这可能不是这个特殊情况下的问题,但可能是另一种情况下的问题。啊,我明白你的意思。我想是这样的。在我上面的例子中,它将删除字符之后的所有内容,包括:'-''+''*''/'和'|'。抢手货拆下|,一切都应该很好。