您好我正在使用C ++实现正则表达式。
背景:
我有std::string
和std::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"
提前致谢
答案 0 :(得分:0)
由于ECMAScript syntax for the expression
在正则表达式中不支持[]
,可能会引发错误。您可以尝试使用basic
正则表达式约束标记。
std::regex e((char*)b, std::regex_constants::basic);
他们正在讨论有关此here的更多信息。