Säännöllisten lausekkeiden käyttö

C++:
Säännöllisten lausekkeiden käyttö

Kuinka:

C++11 toi tuen säännöllisille lausekkeille standardikirjastoon, <regex>, tarjoten robustin kehyksen merkkijonojen etsintään ja manipulointiin. Tässä on perusesimerkki säännöllisten lausekkeiden käytöstä mallin etsimiseen merkkijonosta:

#include <iostream>
#include <regex>

int main() {
    std::string target = "Hello, my email is [email protected]";
    std::regex email_pattern(R"(\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b)");

    if (std::regex_search(target, email_pattern)) {
        std::cout << "Sähköposti löytyi!" << std::endl;
    } else {
        std::cout << "Sähköpostia ei löytynyt." << std::endl;
    }

    return 0;
}

Esimerkkituloste

Sähköposti löytyi!

Monimutkaisempia manipulaatioita varten, kuten mallien korvaaminen merkkijonoissa, C++:n säännölliset lausekkeet voivat olla hyvin käteviä:

#include <iostream>
#include <regex>

int main() {
    std::string text = "Sade Espanjassa putoaa lähinnä tasangolle.";
    std::regex vowel_regex("([aeiou])");

    std::string replaced_text = std::regex_replace(text, vowel_regex, "*");
    std::cout << replaced_text << std::endl;

    return 0;
}

Esimerkkituloste

S*d* Esp*nj*ss* p*t** l*h*nn* t*s*ng*ll*.

Ohjelmoijille, jotka tutkivat standardikirjaston ulkopuolella, Boost Regex -kirjasto (boost/regex.hpp) on suosittu kolmannen osapuolen vaihtoehto, joka tarjoaa parannettuja regex-ominaisuuksia ja suorituskykyoptimointeja, erityisesti monimutkaisten mallien tai laajojen datan käsittelyjen osalta:

#include <iostream>
#include <boost/regex.hpp>

int main() {
    std::string s = "Boost-kirjastot ovat hauskoja!";
    boost::regex expr("(\\w+)\\s(kirjastot)"); // Vastaa "Boost-kirjastot"
    std::string fmt("GNU \\1"); // Korvaa "GNU Boost"

    std::string result = boost::regex_replace(s, expr, fmt);
    std::cout << result << std::endl;

    return 0;
}

Esimerkkituloste

GNU Boost ovat hauskoja!

Nämä esimerkit raapaisevat vain pintaa C++:n kyvyistä säännöllisten lausekkeiden kanssa, havainnollistaen perusetsintöjä, mallien vastaavuuksia ja korvauksia, joko käyttäen standardikirjastoa tai tehostettuna Boostin tehokkaalla regex-toteutuksella.