将多项式解析为单数的正则表达式
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]+)?)?)
编辑:
用 [0-9]+
替换 [0-9]*
是一个错误,没有 *
正则表达式将不会只匹配文字元素,正如您所指出的。所以我把它改回来,并添加了 (?=.+)
以避免匹配空格。
我正在尝试解析一个多项式,例如:
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]+)?)?)
编辑:
用 [0-9]+
替换 [0-9]*
是一个错误,没有 *
正则表达式将不会只匹配文字元素,正如您所指出的。所以我把它改回来,并添加了 (?=.+)
以避免匹配空格。