我想用正则表达式拆分一个数学方程式,但有一点麻烦。
我们以以下字符串为例: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("(?=(?<!\\*)-|\\+|\\*|/)")