C++正则表达式整理:
"[^c]" | 匹配任意不是'c'的单个字符 | |
"[[:alpha:]]" | 匹配任意单个字母 | |
"*" | 零个或多个 | |
"+" | 一个或多个 | |
"[[:alpha:]]*" | 零个或多个字母 | |
"[[:alpha:]]+" | 一个或多个字母 | |
string pattern("[^c]ei"); //不是'c'+"ei"的三字母字符串
pattern = "[[:alpha:]]*"+pattern+"[[:alpha:]]*"; //零个或多个字母+非'c'的单个字母+"ei"+零个或
//多个字母
regex r(pattern); //构造一个用于查找模式的regex正则表达式对象
smatch results; //定义一个对象保存搜索结果
string test_str = "receipt freind theif receive";
//用正则表达式r在test_str中查找与正则表达式的字符串pattern匹配的子串
if(regex_search(test_str,results,r))
cout<<results.str()<<endl; //如果找到第一个匹配的字符串则打印该字符串,由于过滤了空格,所以是
//个单词
C++正则表达式库(RE库)定义在头文件<regex>中,可用类或函数有:
regex | 表示一个正则表达式的类,可使用一个正则表达式字符串构造一个正则表达式对象 | |
regex_match(seq,<smatch>,<regex>,mft) regex_match(seq,<regex>,mft) | 将一个字符序列seq与一个正则表达式匹配,返回bool | |
regex_search(seq,<smatch>,<regex>,mft) regex_search(seq,<regex>,mft) | 寻找字符序列seq中第一个与正则表达式匹配的子序列并存储在results r,返回bool | |
regex_replace | 使用给定格式替换一个正则表达式 | |
sregex_iterator | 迭代器适配器,调用regex_search来遍历一个string中所有匹配的子串 | |
smatch | 容器类,保存在string中搜索的结果 | |
ssub_match | string中匹配的子表达式的结果 |