Giriş
Şu satırı dahil ederiz.
smatch std::string için kullanılır. cmatch ise char için kullanılır.
Sınıf tüm eşleşmeyi ve yakalanan grupları saklar. regex_search veya regex_match ile kullanılır.
str(), position(), length() gibi metodları vardır. Yakalanan gruplara [1] [2] şeklinde erişilebilir.
operator [0] - tüm eşleşme
smatch[0] tüm eşleşmeyi verir. Çıktı olarak hello ve world alırız.
Elimizde iki tane yakalama grubu olan regex olsun
Eşleşme bittikten sonra arkadan kalan kısmı verir. Şöyle yaparız.
Şu satırı dahil ederiz.
#include <regex>
smatch aslında match_results sınıfının gerçekleştirimi.smatch std::string için kullanılır. cmatch ise char için kullanılır.
Sınıf tüm eşleşmeyi ve yakalanan grupları saklar. regex_search veya regex_match ile kullanılır.
str(), position(), length() gibi metodları vardır. Yakalanan gruplara [1] [2] şeklinde erişilebilir.
smatch[0] tüm eşleşmeyi verir. Çıktı olarak hello ve world alırız.
string str = "hello the3re world";
string exp = "\\b[a-zA-Z]+\\b";
regex r (exp);
smatch matches;
while (regex_search(str, matches, r)) {
std::cout << matches[0] << std::endl;
str = matches.suffix().str();
}
operator [1], operator [1] - yakalama gruplarıElimizde iki tane yakalama grubu olan regex olsun
std::regex r ("...(...),...(...)");
Eşleşme başarılı olsunstd::string const str = "..."
std::smatch matches;
if (std::regex_search(str, matches, r)) {...}
Yakalanan grupları görmek için şöyle yaparız.std::cout << "..." << matches [1]
<< "..." << matches [2];
Eğer yakalama grubu 0 veya 1 tane ise şöyle yaparız. Gerçekten yakalama olup olmadığını kontrol etmek için şöyle yaparız.std::string s = ...;
std::regex re(R"regex((\d+)([GMKgmk]){0,1})regex");
std::smatch match;
bool matched = std::regex_match(s, match, re);
if(!matched) {
throw ...;
}
if (match[2].matched)
{
switch (match[2].str().at(0))
{
case 'G':
case 'g':
std::stoul(match[1].str()) * G);
break;
...
}
}
suffix metoduEşleşme bittikten sonra arkadan kalan kısmı verir. Şöyle yaparız.
std::string str = ...
std::match_results< std::string::const_iterator > what;
std::regex regex = ...;
while( std::regex_search (str, what, regex ) ){
str = what.suffix().str();
...
}
Hiç yorum yok:
Yorum Gönder