64,281
社区成员
发帖
与我相关
我的任务
分享
#include <regex>
int main()
{
try
{
regex r("^!\\[CDATA\\[([a-zA-Z0-9]*)\\]\\]$", regex_constants::icase); //匹配以 "![CDATA[" 开头并以 "]]"结尾的,中间为数字、大写字母、小写字母的组合的值。
cmatch results;
char filename[255] = "![CDATA[123456abcdef]]";
if (regex_search(filename, results, r))
cout << results.str(1) << endl; //取第2个匹配分组的值"123456abcdef",注:第1个匹配的是整个表达式,即"![CDATA[123456abcdef]]"
} //([a-zA-Z0-9]*)前后的小括号表示一个子表达式分组。
catch (const std::regex_error& e)
{
cout << e.what() << "\nCode:" << e.code() << endl;
}
}
try
{
regex r("[[:alnum:]]+\\.(cpp|cxx|cc)$", regex_constants::icase);
cmatch results;
char filename[255];
while (cin >> filename)
{
if (regex_search(filename, results, r))
cout << results.str() << endl;
}
}
catch (const std::regex_error& e)
{
cout << e.what() << "\nCode:" << e.code() << endl;
}