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

Regex to parse polynom as monom

本文关键字:单项 多项式 正则表达式      更新时间:2023-09-26

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

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-9]*(?:'*?x(?:'^[0-9]+)?)?)

演示

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