Iterieren mit boost::sregex_iterator
-
Hallo,
ich möchte einen regulären Ausdrück in einem Text suchen. Das sieht bei mir so aus:
string text(...); boost::regex expr("<a href=\"(.*?)\".*?</a>"); for (boost::sregex_iterator m1(text.begin(), text.end(), expr); m1 != boost::sregex_iterator(); ++m1) { cout << m1->str() << endl; }Insbesondere
m1 != boost::sregex_iterator()scheint mir sehr obskur. Geht das irgendwie besser?
-
Wie wäre es damit:
std::string text = /* ... */; boost::regex expr("<a href=\"(.*?)\".*?</a>"); std::for_each(boost::sregex_iterator(text.begin(), text.end(), expr), boost::sregex_iterator(), std::ostream_iterator<boost::smatch>(std::cout, '\n'));Oder falls du bei eine For-Schleife bleiben möchtest, wozu es in diesem Beispiel zwar keinen Grund gibt:
std::string text = /* ... */; boost::regex expr("<a href=\"(.*?)\".*?</a>"); boost::sregex_iterator iter(text.begin(), text.end(), expr); boost::sregex_iterator end; for(; iter != end; ++iter) { std::cout << iter->str() << std::endl; }Grüssli