Usuwanie znaków pasujących do wzorca

C++:
Usuwanie znaków pasujących do wzorca

How to: (Jak to zrobić:)

#include <iostream>
#include <string>
#include <regex>

std::string delete_matching_chars(std::string str, const std::string& pattern) {
    std::regex reg(pattern);
    return std::regex_replace(str, reg, "");
}

int main() {
    std::string data = "Cześć! Moje nr telefonu to 123-456-789, a email to [email protected]";
    std::string pattern = "\\d"; // Usunięcie wszystkich cyfr
    std::string result = delete_matching_chars(data, pattern);
    std::cout << result << std::endl; // Output: Cześć! Moje nr telefonu to ---, a email to [email protected]
    return 0;
}

Deep Dive (Wgłębiając się)

Usuwanie pasujących znaków jest tak stare jak same wyrażenia regularne, które pojawiły się w latach 50. XX wieku. Są różne sposoby, np. iteracja po każdym znaku i sprawdzenie czy pasuje do wzoru. Wyrażenia regularne to jednak szybsze i bardziej elastyczne rozwiązanie.

Wiele języków ma własne wersje wyrażeń regularnych, jednak C++ stosuje bibliotekę <regex> obecną od C++11. Wcześniej używano zewnętrznych bibliotek, jak Boost.Regex. Alternatywą jest też ręczne tworzenie funkcji do przeszukiwania i zmiany danych, co może być szybsze dla prostych wzorców, lecz znacząco mniej czytelne i trudne w utrzymaniu.

See Also (Zobacz również)