21 Şubat 2018 Çarşamba

regex regex_replace metodu

Giriş
Şu satırı dahil ederiz.
#include <boost/regex.hpp>
regex_replace - string + regex + string
Bu metod yeni bir string döner. Şu kullanım sonucu  yeni bir değişkene atamadığı için yanlış.
string str = ...;
boost::regex r("...");
boost::regex_replace(str, r, "...");
Örnek
Şöyle yaparız.
std::string str = "...";
boost::regex r {"..."};
std::string fmt{"..."};
std::string result = boost::regex_replace (str, r, fmt);
Örnek
Şöyle yaparız.
std::string result = boost::regex_replace(str,r, fmt,
  boost::match_default | boost::format_sed);
regex_replace - string + regex + lambda
Lambda parametresi boost::smatch tipindendir. Şöyle yaparız.
std::string str = "dddd, mmmm d, yyyy";
str = boost::regex_replace(str, boost::regex("(dddd)|(d)|(mmmm)|(yyyy)"),
  [](auto& match)->std::string{
    if (match.str() == "dddd")
      return "Tuesday";

    if (match.str() == "d")
      return "26";

    if (match.str() == "mmmm")
      return "December";

    if (match.str() == "yyyy")
      return "2016";

    return "";
 });

Hiç yorum yok:

Yorum Gönder