理解c++STL regex_research()
来源:互联网 发布:做淘宝客服工资怎么样 编辑:程序博客网 时间:2024/06/06 07:33
简单说一下自己的理解,就谈一下这个重载版本吧:函数如下
bool regex_search (const basic_string<charT,ST,SA>& s, match_results<typename basic_string<charT,ST,SA>::const_iterator,Alloc>& m, const basic_regex<charT,traits>& rgx, regex_constants::match_flag_type flags = regex_constants::match_default);
s是目标字符串,m是存储匹配结果的容器,rgx是匹配模式,这里主要说一下在一个目标序列中有多个匹配结果的情况,因为每一次执行regex_search后m只能存储第一个匹配结果,如下代码:
#include <iostream>#include <string>#include <regex>int main(){ std::string s("this subject has a submarine as a subsequence"); std::smatch m; std::regex e("\\b(sub)([^ ]*)"); // matches words beginning by "sub" while (std::regex_search(s, m, e)) { for (auto x : m) std::cout << x << " "; std::cout << std::endl; s = m.suffix().str(); } return 0;}
会存在三个匹配项,即subject、 submarine 、 subsequence,每一次执行完regex_search后m存储匹配项、匹配项中的每一个分组,比如第一次匹配完,m[0]为subject,m[1]为sub,m[2]为ject,此外还存储了一个前缀(在s中,匹配项subject之前的字符串(“this ”))和一个后缀(在s中,匹配项subject之后的字符串(“ has a submarine as a subsequence”)),所以,在匹配完subject后,必须在后缀中在此执行regex_search,以匹配submarine,所以我们需要自己更新s为m的后缀m.suffix(),如此,对于上面的代码就好理解多啦。
阅读全文
0 0
- 理解c++STL regex_research()
- STL理解
- stl理解
- STL理解
- 个人对c++STL及其它编程语言的理解
- C++STL
- C++STL
- C++----STL
- C++,stl
- c++STL
- C++STL
- C++/STL
- [C++]STL
- C++STL
- C++STL
- C++STL
- C++STL
- STL理解篇
- 巧妙的实现点阵图形显示可视化编程(C语言)
- mysql之skip-name-resolve解决外网链接客户端过慢问题
- 代理模式
- Ubuntu下安装Express框架
- 四种解析XML文件的方法
- 理解c++STL regex_research()
- maven实战(六)使用Nexus创建私服
- Spring框架学习(1)——HelloWorld
- HDU 3697(H) ——Selecting courses(暴力枚举,贪心)
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Android AOP实现模块间通信
- HDU1873 看病要排队【模拟+优先队列】
- jquery给input赋值val(val)
- 实现二叉树的前序/中序/后序递归、非递归遍历