Giriş
Şu satırı dahil ederiz.
Örnek
Şöyle yaparız.
Düzenli ifade içinde iki tane yakalama grubu olsun. Şöyle yaparız.
Şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/regex.hpp>
Tekrar eden düzenli ifadeleri yakalamak için kullanılır. Açıklaması şöyle(something)+ will only capture the first occurrence of something, not all of them. The right way to solve this problem is to write a regex that matches a single pair, and apply it repeatedly, e.g. via std::regex_iterator.Constructor
Örnek
Şöyle yaparız.
std::string str = "...";
boost::regex re = ...;
boost::sregex_iterator it = boost::sregex_iterator (str.begin(), str.end(), re);
ÖrnekDüzenli ifade içinde iki tane yakalama grubu olsun. Şöyle yaparız.
const boost::regex expr{ R"..." };
const std::string s = ...;
boost::sregex_iterator it{ begin(s), end(s), expr }, itEnd;
std::for_each( it, itEnd, []( const boost::smatch& m ){
std::cout << m[1] << '\n' << m[2] << std::endl;
});
ÖrnekŞöyle yaparız.
using Key = std::string;
using RawValue = std::string;
using Settings = std::map<Key, RawValue>;
std::string const input = ...;
Settings settings;
boost::regex re(R"((\w+)\(('.*?')\))");
auto f = boost::make_regex_iterator(input, re);
for (auto& match : boost::make_iterator_range(f, {})) {
settings.emplace(match[1].str(), match[2].str());
}
Hiç yorum yok:
Yorum Gönder