首页 > 代码库 > Boost::regex练习实例
Boost::regex练习实例
#include <algorithm> #include <vector> #include <string> #include <iostream> #include <cassert> #include <boost/regex.hpp> using namespace std; using namespace boost; //写一个程序,提取<p></p>之间的内容 int main() { // regex reg("(<p.*>(.*)</p>)?"); regex reg("<p.*?>(.*?)</p>"); vector<string> vec; string s= "<p>i‘m here!</p> and of course <pasda>you‘re here too,ok?</p>"; sregex_iterator it(s.begin(),s.end(),reg); sregex_iterator end; while (it!=end) { vec.push_back((*it).str().c_str()); it++; } copy(vec.begin(),vec.end(),ostream_iterator<string>(cout,"/n")); //在得到iterator或者子字符串后,再用regex_replace进行替换就行了。 vector<string> vec2; regex reg2("(<p.*?>)(.*?)(</p>)"); for (vector<string>::iterator it3 = vec.begin();it3!=vec.end();it3++) { string s= *it3; s=regex_replace(s,reg2,"$2"); vec2.push_back(s); } copy(vec2.begin(),vec2.end(),ostream_iterator<string>(cout,"/t")); return 0; }
直觉告诉我还可以写得更简洁一些,不过现在不够熟练,得慢慢琢磨了。
使用regex_iterator进行匹配,以及提取表达式,显得还不够熟练呢......正则表达式写错了,程序根本得不到想要的结果。
对于?的使用,应该有更进一步的认识了吧?
Boost::regex练习实例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。