正则表达式将多项式解析为monom

时间:2016-03-08 22:35:12

标签: javascript regex algebra

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

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

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

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

将返回:

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

这给了我所有具有系数(数字)和小部件的部件。

但我无法找到一种方法来获得没有文字部分的数字:

16
-6
+7
+8
-15

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

str.split(/[+-]/) 

得到所有的颂歌但是这样,我在数字前面丢失了标志。

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

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

这会返回我需要的所有部分(带有标志),除非我在这个例子中无法管理'power'符号x ^ 25。

1 个答案:

答案 0 :(得分:0)

你可以制作一个"字面部分"可选:

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

DEMO

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