Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 接受基于正则表达式的字符串_C++_Regex_String - Fatal编程技术网

C++ 接受基于正则表达式的字符串

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

我对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::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'