Giriş
std::string için sregex_token_iterator kullanılır. constant char için cregex_token_iterator kullanlır.
regex_search ile yapılan işi iterator kullanarak gerçekleştirir. regex_iterator ve regex_token_iterator isimli iki farlık sınıf var. İlki sadece eşleşmelere erişimi sağlıyor, ikincisi ise eşleşen ve eşleşmeyen kısımlar erişim sağlıyor.
Kullanım
Şöyle yaparız. regex_token_iterator sınıfının en son parametresine -1 vererek tüm capture group'ları ve aradaki seperator grupları istediğimizi belirtiriz.
Şöyle yaparız. Sınıfı kurarken 1 vermemizin sebebi, yakalanan birinci grubu istememiz.
Şöyle yaparız.
std::string için sregex_token_iterator kullanılır. constant char için cregex_token_iterator kullanlır.
regex_search ile yapılan işi iterator kullanarak gerçekleştirir. regex_iterator ve regex_token_iterator isimli iki farlık sınıf var. İlki sadece eşleşmelere erişimi sağlıyor, ikincisi ise eşleşen ve eşleşmeyen kısımlar erişim sağlıyor.
Kullanım
Şöyle yaparız. regex_token_iterator sınıfının en son parametresine -1 vererek tüm capture group'ları ve aradaki seperator grupları istediğimizi belirtiriz.
auto str = std::string{"..."};
auto regex = std::regex{"..."};
auto it = std::regex_token_iterator{str.cbegin(), str.cend(), regex, -1};
auto const end = std::regex_token_iterator{};
while (it != end)
{
++it;
}
Constructor - Capture Group Numarası ileŞöyle yaparız. Sınıfı kurarken 1 vermemizin sebebi, yakalanan birinci grubu istememiz.
string data{"..."};
regex re{"<([^>]+)>"};
regex_token_iterator<string::iterator> it{data.begin(), data.end(), re, 1};
Bitiş iterator için şöyle yaparız.decltype(it) rend{};
*operatorŞöyle yaparız.
while (rit != rend) std::cout << *it++ << std::endl;
Hiç yorum yok:
Yorum Gönder