使用正则表达式检测表达式中的术语

时间:2013-08-09 01:51:58

标签: c++ regex c++11

我想检测多项式表达式中的所有项,如

  

的x ^ 2 + 3×2

我希望将字符串分隔为'+'和' - '的子字符串。换句话说,我希望单独列出这些术语。为简化起见,我在字符串的开头加上“+”或“ - ”,如果不存在则简化。

  

+ X ^ 2 + 3×2

现在,我需要一个可以单独检测所有术语的正则表达式。我还需要记住,可以有尽可能多的术语。

我确实尝试了像

这样的东西
  

[+ - ]?(?+)

但是因为我是正则表达式的新手,所以我认为我的能力不在于它。

我需要你的帮助。请注意,在这种情况下,所需的结果是:

  1. + X ^ 2
  2. + 3×
  3. -2
  4. 提前致谢!

2 个答案:

答案 0 :(得分:4)

正如约瑟夫的回答所示,正则表达式可以完成你所述的有限工作。

但是如果你想处理更复杂的表达式,那么正则表达式不会削减它。考虑

x^(-2)+3x-2

或未展开的表达,例如

x^2+3(x-2)-2

这些需要解析器:请参阅Regular Expression Vs. String Parsing

答案 1 :(得分:3)

试试这个正则表达式:

/[+-]?[^+-]+/g

以下是一个快速解释:

[+-]?   // Optionally find either a + or a -
[^+-]+  // Find as many non-plus-or-minus characters as possible

在此处查看:[{3}}