我正在尝试解析多项式,例如:
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。
答案 0 :(得分:0)
你可以制作一个"字面部分"可选:
(?=.+)([+-]?[0-9]*(?:\*?x(?:\^[0-9]+)?)?)
编辑:
正如您所指出的那样,将[0-9]*
替换为[0-9]+
是一个错误,没有*
正则表达式只会匹配文字元素。所以我将其更改回来,并添加(?=.+)
以避免匹配空格。