我想用正则表达式分割数学方程式,但我遇到了一点问题。
我们将以此字符串为例: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
正如您所看到的,我的问题是,如何编写与*-
匹配或仅匹配*
或仅匹配-
我的想法是,(?=(\\*-|\\[^*]-|\\+|\\*|\\/))
,否定*
前面的-
,但这不起作用。
答案 0 :(得分:2)
您需要添加一个负面的lookbehind - 如果前面没有*
,您只想在连字符处拆分:
equation.split("(?=(?<!\\*)-|\\+|\\*|/)")