如何在这种情况下使用C ++正则表达式?

时间:2016-12-11 12:30:37

标签: c++ regex

我有以下C ++代码:

std::regex e("'[^\"]'");
std::smatch sm;
std::regex_search(s.cbegin(), s.cend(), sm, e);
std::cout << sm.str() << " match\n";

我尝试创建一个条件,该条件基本上应该接受以一个撇号('')开头和结尾的所有字符串,并且它们之间必须是双引号的所有内容(" )。

编辑: 例如,该样本不起作用(它应该):

std::string s("'example'");

1 个答案:

答案 0 :(得分:0)

问题在于正则表达式。您希望匹配任意数量的非"字符匹配项。 any number of*)正则表达式运算符修复了此问题:

#include <regex>
#include <iostream>
#include <string>

int main () {
    std::string s("'example'");
    std::regex e("'[^\"]*'");
                     // ^ Allow any characters besides "
    std::smatch sm;
    std::regex_search(s.cbegin(), s.cend(), sm, e);
    std::cout << sm.str() << " match\n";
    return 0 ;
}

请参阅live demo