我对 C++ 中的正则表达式有点陌生。我的头有点旋转,因为它比我想象的要复杂得多。
在我的实际代码(我在下面缩写)中,我想使用迭代器在一个大字符串中从一个地方移动到另一个地方,从而提取不同的信息。现在我什至无法编译这段代码。
string email1S = "abc 31432";
smatch results;
regex mcn("([[:digit:]]+)");
string::const_iterator curPosition = email1S.begin();
if (regex_search(curPosition, email1S.end(), results, mcn))
{
cout << "We have a match" << endl;
cout << results[1].str() << endl;
}
curPosition += results[0].length();
该行:
if (regex_search(curPosition, email1S.end(), results, mcn))
显然不匹配 regex_search 的任何重载。错误(来自 Visual Studio 2010)被描述为好像它希望使用完全不同的重载:
Error 1 error C2780: 'bool std::tr1::regex_search(const std::basic_string<_Elem,_StTraits,_StAlloc> &,const std::tr1::basic_regex<_Elem,_RxTraits> &,std::tr1::regex_constants::match_flag_type)' : expects 3 arguments - 4 provided
我一定错过了一些基本的东西。