在正则表达式中使用OR进行拆分

时间:2015-03-17 13:04:43

标签: java regex

我想用正则表达式分割数学方程式,但我遇到了一点问题。

我们将以此字符串为例: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

我的想法是,(?=(\\*-|\\[^*]-|\\+|\\*|\\/)),否定*前面的-,但这不起作用。

1 个答案:

答案 0 :(得分:2)

您需要添加一个负面的lookbehind - 如果前面没有*,您只想在连字符处拆分:

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