匹配代数项

时间:2015-04-26 15:36:59

标签: regex

所以我有正则表达式字符串

/((\+|-)?(\d+)(\w?)(\^?\d*))|((\+|-)?(\w)(\^?\d*)(\^?\d*)(?=\+|-))/g

它应该匹配代数项(符号+系数+变量+指数),因此ax^2 +bx +c形式的二次函数将是一组三个匹配。它还匹配有符号和无符号整数(例如+5-24)。但是,除了后跟运算符(+/-)之外,它本身并不匹配代数项,如x^2。这在标准形式方面很好,但如果有多项式函数,如x^3-x^2+x,则最后一个项不会匹配。

我可以为正则表达式添加更多条件以匹配更多情况,但我觉得它变得过于繁琐。所以问题是,我该怎么做?有更有效的方法吗?

1 个答案:

答案 0 :(得分:0)

我建议使用以下正则表达式:

[+-]?(\w?\^?\d*)([+-]\w?\^?\d*)?([+-]?\w|\d)

Demo

捕获组(\w?\^?\d*)会将变量与指数匹配,而不是或(|)匹配可以使用字符类[+-]的符号。