我有以下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'");
答案 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。