| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
|
|
|
|
| #include <boost/regex.hpp> |
| #include <list> |
| #include <fstream> |
| #include <iostream> |
| #include <iterator> |
|
|
| boost::regex e("<\\s*A\\s+[^>]*href\\s*=\\s*\"([^\"]*)\"", |
| boost::regex::normal | boost::regbase::icase); |
|
|
| void load_file(std::string& s, std::istream& is) |
| { |
| s.erase(); |
| if(is.bad()) return; |
| |
| |
| |
| s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail())); |
| char c; |
| while(is.get(c)) |
| { |
| |
| |
| if(s.capacity() == s.size()) |
| s.reserve(s.capacity() * 3); |
| s.append(1, c); |
| } |
| } |
|
|
| int main(int argc, char** argv) |
| { |
| std::string s; |
| std::list<std::string> l; |
| int i; |
| for(i = 1; i < argc; ++i) |
| { |
| std::cout << "Findings URL's in " << argv[i] << ":" << std::endl; |
| s.erase(); |
| std::ifstream is(argv[i]); |
| load_file(s, is); |
| is.close(); |
| boost::regex_split(std::back_inserter(l), s, e); |
| while(l.size()) |
| { |
| s = *(l.begin()); |
| l.pop_front(); |
| std::cout << s << std::endl; |
| } |
| } |
| |
| |
| |
| |
| |
| for(i = 1; i < argc; ++i) |
| { |
| std::cout << "Findings URL's in " << argv[i] << ":" << std::endl; |
| s.erase(); |
| std::ifstream is(argv[i]); |
| load_file(s, is); |
| is.close(); |
| while(boost::regex_split(std::ostream_iterator<std::string>(std::cout), s, e, boost::match_default, 1)) std::cout << std::endl; |
| } |
|
|
| return 0; |
| } |
|
|
|
|
|
|