将多项式解析为单数的正则表达式

Regex to parse polynom as monom

我正在尝试解析一个多项式,例如:

16-3x^25-6-483*x+7+5*x+8-x-15

实际上,我有这个正则表达式:

([+-]?[0-9]*?\*?x(\^[0-9]+)?)

哪个 return:

-3x^25
-483*x
+5*x
-x

这给了我所有带有系数(数字)和乱码部分的部分。

但是我找不到没有垃圾部分的方法来获取数字:

16
-6
+7
+8
-15

我可以简单地使用拆分方法:

str.split(/[+-]/) 

为了得到所有的单数,但是这样,我失去了数字前面的符号。

另一个尝试是使用这个正则表达式:

([+-]?(\d+)?\*?x?)

这 return 是我需要的所有部分(带有符号),除了我无法管理本例中的 'power' 符号 x^25。

您可以通过以下方式使 "literal part" 可选:

(?=.+)([+-]?[0-9]*(?:\*?x(?:\^[0-9]+)?)?)

DEMO

编辑: 用 [0-9]+ 替换 [0-9]* 是一个错误,没有 * 正则表达式将不会只匹配文字元素,正如您所指出的。所以我把它改回来,并添加了 (?=.+) 以避免匹配空格。