我想用正则表达式拆分一个数学方程式,但有一点麻烦。

我们以以下字符串为例:3x^3+2x^2-6x*-3

用一些正则表达式拆分后,我想得到以下结果:

我期望的结果:

[0] 3x^3
[1] +2x^2
[2] -6x
[3] *-3


我正在尝试使用此RE:(?=(\\*-|\\-|\\+|\\*|\\/))

equation.split("(?=(\\*-|\\-|\\+|\\*|\\/))")之后

结果是:

[0] 3x^3
[1] +2x^2
[2] -6x
[3] *
[4] -3


我无法删除该部分-\\--因为,如果我的字符串是:3x^3+2x^2-6x-3
我期望:

[0] 3x^3
[1] +2x^2
[2] -6x
[3] -3


如您所见,我的问题是,我如何编写将*-匹配在一起或仅匹配*或仅匹配-的RE

我的想法是(?=(\\*-|\\[^*]-|\\+|\\*|\\/)),将*放在-前面,但这是行不通的。

最佳答案

您需要在后面添加一个负数-您只想在连字符前面加上*的情况下拆分连字符:

equation.split("(?=(?<!\\*)-|\\+|\\*|/)")

10-06 10:29