Boost
C++ Libraries
...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
This is an older version of Boost and was released in 2021. The current version is 1.89.0.
The following helper functions are provided to ease the conversion from
an MFC/ATL string to a regex_iterator or regex_token_iterator:
template <class charT> regex_iterator<charT const*> make_regex_iterator( const ATL::CSimpleStringT<charT>& s, const basic_regex<charT>& e, ::boost::regex_constants::match_flag_type f = boost::regex_constants::match_default);
Effects: returns regex_iterator(s.GetString(), s.GetString() + s.GetLength(),
e,
f);
Example:
void enumerate_links(const CString& html) { // enumerate and print all the links in some HTML text, // the expression used is by Andew Lee on www.regxlib.com: boost::tregex r( __T("href=[\"\']((http:\\/\\/|\\.\\/|\\/)?\\w+" "(\\.\\w+)*(\\/\\w+(\\.\\w+)?)*" "(\\/|\\?\\w*=\\w*(&\\w*=\\w*)*)?)[\"\']")); boost::tregex_iterator i(boost::make_regex_iterator(html, r)), j; while(i != j) { std::cout << (*i)[1] << std::endl; ++i; } }
template <class charT> regex_token_iterator<charT const*> make_regex_token_iterator( const ATL::CSimpleStringT<charT>& s, const basic_regex<charT>& e, int sub = 0, ::boost::regex_constants::match_flag_type f = boost::regex_constants::match_default);
Effects: returns regex_token_iterator(s.GetString(), s.GetString() + s.GetLength(),
e,
sub,
f);
template <class charT> regex_token_iterator<charT const*> make_regex_token_iterator( const ATL::CSimpleStringT<charT>& s, const basic_regex<charT>& e, const std::vector<int>& subs, ::boost::regex_constants::match_flag_type f = boost::regex_constants::match_default);
Effects: returns regex_token_iterator(s.GetString(), s.GetString() + s.GetLength(),
e,
subs,
f);
template <class charT, std::size_t N> regex_token_iterator<charT const*> make_regex_token_iterator( const ATL::CSimpleStringT<charT>& s, const basic_regex<charT>& e, const int (& subs)[N], ::boost::regex_constants::match_flag_type f = boost::regex_constants::match_default);
Effects: returns regex_token_iterator(s.GetString(), s.GetString() + s.GetLength(),
e,
subs,
f);
Example:
void enumerate_links2(const CString& html) { // enumerate and print all the links in some HTML text, // the expression used is by Andew Lee on www.regxlib.com: boost::tregex r( __T("href=[\"\']((http:\\/\\/|\\.\\/|\\/)?\\w+" "(\\.\\w+)*(\\/\\w+(\\.\\w+)?)*" "(\\/|\\?\\w*=\\w*(&\\w*=\\w*)*)?)[\"\']")); boost::tregex_token_iterator i(boost::make_regex_token_iterator(html, r, 1)), j; while(i != j) { std::cout << *i << std::endl; ++i; } }