正则表达式
是一种描述字符序列的方法,就是寻找一定规则的匹配字符序列。在头文件regex中
regex:表示有一个正则表达式的类
regex_match:将一个字符序列与一个正则表达式匹配
regex_search:寻找第一个与正则表达式匹配的子序列
regex_replace:使用给定格式替换一个正则表达式
sregex_iterator:迭代器适配器,调用regex_search来遍历一个string中所有匹配的字串
smatch:容器类,保存在string中搜索的结果
ssub_match:string中匹配的子表达式的结果
string pattern("[^c]ei");
pattern = "[[:alpha:]]*" + pattern + "[[:alpha:]]*";//定制查找模式规则
regex r(pattern); //构建一个用于查找模式的regex
smatch resu;//搜索的结果
string test_str = "receipt freind theif receive";
if (regex_search(test_str, resu, r))//得到第一个匹配的子序列
{
cout << resu.str() << endl;
}
使用sregex_iterator
for (sregex_iterator it(file.begin(), file.end(), r), end_it; it != end_it; ++it)
{
cout << it->str() << endl;
}
使用子表达式
第一个是点之前表示文件名的部分 第二个表示文件扩展名 icase忽略大小写
regex rz("([[:alnum:]]+)\\.(ccp|cxx|cc)$", regex::icase);
使用regex_replace
string fmt = "$2.$5.$7.";//格式改为ddd.ddd.ddd
string pp = "(\\()?(\\d{3})(\\))?([-. ])?(\\d{3})([-. ]?)(\\d{4})";
regex rr(pp);
string num = "(908) 555-1800";
cout << regex_replace(num, rr, fmt) << endl;