正则表达式提取器

时间:2014-03-08 12:31:51

标签: c++ regex

您好我正在使用C ++实现正则表达式。

背景:

我有std::stringstd::regex。我需要将字符串与此正则表达式进行比较。 这里使用的正则表达式与验证无关。我的典型正则表达式将是一些东西 像

a[bc]{2}并且超出此范围

我必须将此正则表达式作为char指针参数传递给函数。

问题: 我无法将char指针指定给std::regex。如果我这样做,我会收到以下错误。

在抛出std::regex_error what(): regex_error

的实例后终止调用

我的函数体将是

std::string s((char*)a);  // The main string
std::regex e((char*)b); // Regex comparing the main string. a and b are the parameters to the function

if (std::regex_match(s, e))
{
    // returns the matched portion of the string 
    //  for instance  "abcdeef"  , "e{2}" would return ee
}
else 
{
      // return "Mismatch"
}

有什么建议..?或者有没有办法从正则表达式中提取字符串,如"a{2}b" - > "aab" 提前致谢

1 个答案:

答案 0 :(得分:0)

由于ECMAScript syntax for the expression在正则表达式中不支持[],可能会引发错误。您可以尝试使用basic正则表达式约束标记。

std::regex e((char*)b, std::regex_constants::basic);

他们正在讨论有关此here的更多信息。