C++ 接受基于正则表达式的字符串
我对regex很陌生。我正在尝试编写一个函数,它将解析一个字符串参数并返回正确的字符串。这是我学习这个的一个基本例子。有人能帮我完成CPP中的功能吗C++ 接受基于正则表达式的字符串,c++,regex,string,C++,Regex,String,我对regex很陌生。我正在尝试编写一个函数,它将解析一个字符串参数并返回正确的字符串。这是我学习这个的一个基本例子。有人能帮我完成CPP中的功能吗 string check(string str1) { regex re = "(.*?)"; string s = str1; for(std::sregex_iterator i = std::sregex_iterator(s.begin(), s.end(), re);i != std::sreg
string check(string str1) {
regex re = "(.*?)";
string s = str1;
for(std::sregex_iterator i = std::sregex_iterator(s.begin(), s.end(), re);i != std::sregex_iterator();++i)
{
std::smatch m = *i;
cout << "the token is"<<" "<< m.str() << endl;
count++;
}
}
字符串检查(字符串str1){
正则表达式re=“(*?”;
字符串s=str1;
对于(std::sregx_迭代器i=std::sregx_迭代器(s.begin(),s.end(),re);i!=std::sregx_迭代器();++i)
{
std::smatch m=*i;
你也许能以某种方式将正则表达式塞进这个任务中,但这并不容易。我知道如何编写一个正则表达式来检查字符串是否有效,但不能生成不带引号的文本。另一方面,编写一个简单的解析器,只需在单个字符上循环,就可以一次性解码字符串。@IgorTandetnik,你能帮我用正则表达式检查字符串是否有效吗?这将是一个巨大的帮助。谢谢。以下内容(未经测试):|[^,][^,]*|“([^”]*”)*[^”]*“
。英文:一个空字符串;或一个不以引号开头且不包含任何逗号的字符串;或一个由引号包围的字符串,由零个或多个形式段(除引号外的任何内容+一对引号)和另一个(除引号外的任何内容)组成。”最后一段。@IgorTandetnik,这对cpp不起作用?我做错了什么吗?我的透视能力有限。你的电脑屏幕在我的脑海里模糊不清,我发现很难看清你在做什么以及是对是错。
'string' -> 'string'
'str,ing' -> <ERROR>
'"string"' -> 'string'
' "string"' -> ' "string"'
'"string' -> <ERROR>
'"str,ing"' -> 'str,ing'
'"str""ing"' -> 'str"ing'
'"str"",ing"' -> 'str",ing'