C++04:使用Boost-小试Regex库
2009-10-29 11:57
一、编写代码
下面代码实现的功能:找出html文件中的所有链接
/*
* regex_test.cpp
*
*/
#include <iostream>
#include <fstream>
#include <string>
#include <boost/regex.hpp>
using namespace std;
int main(int argc, char* argv[]) {
if (argc != 2) {
cerr << "usage: " << argv[0] << " <input_file>" << '\n';
return 1;
}
ifstream fin(argv[1]);
if (!fin) {
cerr << "open file " << argv[1] << " failed." << '\n';
return 1;
}
string content;
char c;
while (fin >> c) {
content.push_back(c);
}
try {
boost::regex re("href\\s*=\\s*\"([^\"]+)\"", boost::regex::icase);
boost::sregex_token_iterator it(content.begin(), content.end(), re, 1,
boost::match_default);
boost::sregex_token_iterator end;
while (it != end)
cout << *it++ << endl;
} catch (exception& e) {
cerr << e.what() << '\n';
}
}
二、编译代码
$ g++ -o"regex_test" -g3 -Wall regex_test.cpp -lboost_regex
三、运行程序 regex_test
$ ./regex_test