除以 0 的正则表达式
Regular expression for division by 0
我正在解析字符串,然后需要将其转换为数字。但是如果它包含除以 0 例如
String str1 = "1+2+3-5/0+4+6"
String str2 = "1+2+3-4/0.000 +4+6"
我必须写在这个字符串中"Division by 0 error"。我的正则表达式看起来像这样,但它是错误的。
String REGEXP_DIV_BY_0 = "(.*)([/0\.0{1,4}](^[1-9]+))(.*)";
我无法为此任务创建正则表达式,以匹配包含除以 0 的字符串。
这应该可以完成工作:.*\/0([^.]|$|\.(0{4,}.*|0{1,4}([^0-9]|$))).*
在这里你可以尝试一下:https://regex101.com/r/lwAVan/1
这有点奇怪,但如果你真的必须这样做,那么类似下面的模式应该可以工作:
0\.0{1,4}\D|/0[^\d.]
由于您的要求不是很明确,所以很难说它需要多宽容。例如,此模式不允许在除法运算符和除数之间使用 white-space。它还假设数字后面总会有一些文本,只要它总是写成 java 字符串文字,那么这是一个安全的假设。
我愿意:
/0+(?:\.?0*)?(?!\d)
解释:
/ : a slash (escape it if necessary)
0+ : 1 or more 0
(?: : non capture group
\.?0* : an optional comma followed by 0 or more 0's
)? : end group (optional)
(?!\d) : negative lookahead, assume there're no more digit followed the 0's
regex 不是评估表达式的正确方法,有太多情况,例如 1/0, 1/(1-1), 1/(5+5-10), 1/(2*2-2^2)....
你可以选择 ScriptEngineManager
:
String str1 = "555/0";
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("js");
try {
System.out.println(engine.eval(str1));
}
catch (ScriptException e) {
e.printStackTrace();
}
如果有 /0
的情况,结果将是“Infinity
”。
我正在解析字符串,然后需要将其转换为数字。但是如果它包含除以 0 例如
String str1 = "1+2+3-5/0+4+6"
String str2 = "1+2+3-4/0.000 +4+6"
我必须写在这个字符串中"Division by 0 error"。我的正则表达式看起来像这样,但它是错误的。
String REGEXP_DIV_BY_0 = "(.*)([/0\.0{1,4}](^[1-9]+))(.*)";
我无法为此任务创建正则表达式,以匹配包含除以 0 的字符串。
这应该可以完成工作:.*\/0([^.]|$|\.(0{4,}.*|0{1,4}([^0-9]|$))).*
在这里你可以尝试一下:https://regex101.com/r/lwAVan/1
这有点奇怪,但如果你真的必须这样做,那么类似下面的模式应该可以工作:
0\.0{1,4}\D|/0[^\d.]
由于您的要求不是很明确,所以很难说它需要多宽容。例如,此模式不允许在除法运算符和除数之间使用 white-space。它还假设数字后面总会有一些文本,只要它总是写成 java 字符串文字,那么这是一个安全的假设。
我愿意:
/0+(?:\.?0*)?(?!\d)
解释:
/ : a slash (escape it if necessary)
0+ : 1 or more 0
(?: : non capture group
\.?0* : an optional comma followed by 0 or more 0's
)? : end group (optional)
(?!\d) : negative lookahead, assume there're no more digit followed the 0's
regex 不是评估表达式的正确方法,有太多情况,例如 1/0, 1/(1-1), 1/(5+5-10), 1/(2*2-2^2)....
你可以选择 ScriptEngineManager
:
String str1 = "555/0";
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("js");
try {
System.out.println(engine.eval(str1));
}
catch (ScriptException e) {
e.printStackTrace();
}
如果有 /0
的情况,结果将是“Infinity
”。