正则表达式使用规则:
*在c++z中使用转义符号都要双写不管是\w,还是普通的符号,例如\\w,\\.
1.单个内容的匹配符号:
. :是针对除了换行符以外的任意一个字符.
\w:字母(大小写),数字,下划线(\W是除了\w之外的符号)
\d:数字(\D是非数字)
\s:空白符(空格,制表,换行)(大写同上)
\b:声明一个边界
[ ]:匹配指定字符(例如:[a-z\A-Z1-9]是匹配小写字母大写字母,"\"以及数字的一个字符)(匹配汉字的方法使用万国码[\u4e00-\u9fa5])
2.匹配的字符个数:(用在单个限定样式的字符后面)
+:匹配一个或多个字符
*:匹配零个或是多个字符
?:匹配零个或是一个字符
{ }:匹配指定次数(例如{1,3}字符重复一次或是3次,也可以{3}只重复3次)
3.分组匹配
我们只需要把我们所需要的分组加上括号,之后我们可以通过smatch变量寻找( 该变量的列表中第一个元素永远是执行匹配操作的原始字符串,smatch mat,mat[1].str分组第一组 ).括号还有就是(jpg|bmp)的作用
正则表达式函数调用:
regex_match()对字符串进行匹配(一般不使用,因为字符串匹配的正则表达式要考虑到整个字符串)
使用regex_search()对字符串进行循环寻找:
正则表达式在对大量字符串的提取有效信息,所支持的头文件#include <regex>
regex_match:将一个字符序列与一个正则表达式匹配
regex_search:寻找第一个与正则表达式匹配的子序列
regex_replace:使用给定格式替换一个正则表达式
sregex_iterator:迭代器适配器,调用regex_search来遍历一个string中所有匹配的字串
string test = "145341.35186410.200034uhvsv nfji7676876///1324531.1"; smatch mat; regex rgx("(\\d+\\.){1}"); string::const_iterator start = test.begin(); string::const_iterator end = test.end(); while (regex_search(start, end, mat, rgx)) { cout << mat[1].str() << endl; start = mat[0].second; }
输出结果:循环输出
下面是正则一些函数的使用方法:
int main(){ //第一种存储方式 //match_results<string::const_iterator> result; //第二种存储方式 smatch result; //文本数据 string str="1994 is my birth year 1994"; //正则表达式 string regex_str("\\d{4}"); regex pattern1(regex_str,regex::icase); //迭代器声明 string::const_iterator iter = str.begin(); string::const_iterator iterEnd= str.end(); string temp; //正则查找 while (std::regex_search(iter,iterEnd,result,pattern1)) { temp=result[0]; cout<<temp<<endl; iter = result[0].second; //更新搜索起始位置 } //正则匹配 string regex_str2("(\\d{4}).*"); regex pattern2(regex_str2,regex::icase); if(regex_match(str,result,pattern2)){ cout<<result[0]<<endl; cout<<result[1]<<endl; } //正则替换 std::regex reg1("\\d{4}"); string t("1993"); str = regex_replace(str,reg1,t); //trim_left cout<<str<<endl; return 0; }
原文链接: https://www.cnblogs.com/yskn/p/9552530.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/280222
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!