C++11正则表达式初探

C++正则表达式

在此之前都没有了解过C++的正则,不过现在大多数赛事都支持C++11了,因此有必要学习一下,用于快速A签到题。 * 所在头文件 ```C++ #include ``` * 正则表达式语法 跟其他语言的正则语法基本一样,要注意的是转义需要两个```\\```,如匹配数字的```\d```应该写成```\\d```; * regex使用语法 ```C++ regex pattern("正则表达式");//匹配规则 smatch result;//用于存放匹配结果 string s;//待匹配的文本串 ``` 库里有三个函数供我们使用,下面逐一简单介绍: ```C++ regex_match(s,result,pattern); ``` 该函数是全文匹配,即从文本第一个字符开始匹配,不符就匹配失败,返回false,成功则返回true ```C++ regex_search(s,result,pattern); ``` 该函数是搜索匹配,即匹配全文中符合规则的子字符串,匹配失败返回false,成功则返回true ```C++ regex_replace(s,pattern,"用于替换的内容"); ``` 该函数用指定字符串替换文本中所有符合规则的子串 如果想要遍历一个文本串中所有的匹配结果,可以像下面这样写 ```C++ while (regex_search(s,result,pattern)) { for (int i = 1; i < result.size(); ++i) { cout << result[i] << endl; } s=result.suffix().str(); } ``` result[0]表示匹配的全部内容,result[i]表示匹配内容中的第i个组(即第i个括号中的内容)
posted @ 2018-10-08 13:22  __orange  阅读(564)  评论(0编辑  收藏  举报