Java Split() 拆分数学方程式
Java Split() to Split Up Math Equation
我正在尝试编写一种方法,将输入的数学表达式拆分为所有单独的运算符和数字。例如,1 + 1 会产生一个 { 1, +, 1 } 的数组,而 2 - -2 会产生一个 { 2, -, -2 } 的数组。在对 Whosebug 做了一些研究之后,我有点开始工作了(使用这个问题:Splitting a simple maths expression with regex),我写了以下内容:
String[] t = tokens.split("(?<=[-+*/()])|(?=[-+*/()])");
这对 1 + 1 很有效,但是执行 2 - -2 会产生 { 2, -, -, 2 },这不是我想要的。我对拆分和正则表达式有点陌生,所以这可能是一个基本问题,我只是未能正确研究,但我们将不胜感激任何帮助!另外,我意识到用空格分隔会非常容易,但我真的很想避免这种情况。非常感谢您的帮助!
通过将 [0-9]+
添加到正则表达式模式的开头,如下所示:
String[] t = tokens.split("[0-9]+(?<=[-+*/()])|(?=[-+*/()])");
您强制第一个匹配表达式位于一系列数字之前,而不是任何内容之前。结果是:
[2 , - , -2]
这并不完美,但至少在你 trim 多余的 space.
之后你现在有了正确的标记
如你所愿。
String[] t = "2-2+-2".split("(?=[-+*/()])|(?<=[^-+*/][-+*/])|(?<=[()])");
// ==> {"2", "-", "2", "+", "-2"}
我正在尝试编写一种方法,将输入的数学表达式拆分为所有单独的运算符和数字。例如,1 + 1 会产生一个 { 1, +, 1 } 的数组,而 2 - -2 会产生一个 { 2, -, -2 } 的数组。在对 Whosebug 做了一些研究之后,我有点开始工作了(使用这个问题:Splitting a simple maths expression with regex),我写了以下内容:
String[] t = tokens.split("(?<=[-+*/()])|(?=[-+*/()])");
这对 1 + 1 很有效,但是执行 2 - -2 会产生 { 2, -, -, 2 },这不是我想要的。我对拆分和正则表达式有点陌生,所以这可能是一个基本问题,我只是未能正确研究,但我们将不胜感激任何帮助!另外,我意识到用空格分隔会非常容易,但我真的很想避免这种情况。非常感谢您的帮助!
通过将 [0-9]+
添加到正则表达式模式的开头,如下所示:
String[] t = tokens.split("[0-9]+(?<=[-+*/()])|(?=[-+*/()])");
您强制第一个匹配表达式位于一系列数字之前,而不是任何内容之前。结果是:
[2 , - , -2]
这并不完美,但至少在你 trim 多余的 space.
之后你现在有了正确的标记如你所愿。
String[] t = "2-2+-2".split("(?=[-+*/()])|(?<=[^-+*/][-+*/])|(?<=[()])");
// ==> {"2", "-", "2", "+", "-2"}