Ce face std::regex_replace
std::regex_replace returnează un șir nou în care fiecare porțiune potrivită cu modelul este înlocuită. Textul original nu se schimbă.
În textul de înlocuire, $1, $2 etc. înseamnă grupurile capturate, iar $& toată potrivirea. Așa poți reordona bucăți: o dată 19.10.2026 devine 2026-10-19. Cu opțiunea std::regex_constants::format_first_only se înlocuiește doar prima potrivire.
Parametri
| Parametru | Descriere |
|---|---|
text |
Textul original. |
re |
Expresia regulată. |
inlocuire |
Textul nou; poate conține $1, $2, $&. |
Ce returnează
Un std::string nou, cu înlocuirile făcute.
Exemple
Exemplul 1: Spații multiple și cifre ascunse
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string text = "Ana are mere.";
std::cout << std::regex_replace(text, std::regex(R"(\s+)"), " ") << '\n';
std::string card = "Card: 4111 1111 1111 1234";
std::cout << std::regex_replace(card, std::regex(R"(\d{4} )"), "**** ") << '\n';
}
Rezultat
Ana are mere.
Card: **** **** **** 1234
Exemplul 2: Reordonarea unei date cu grupuri
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string jurnal = "Livrat 19.10.2026, retur 02.11.2026";
std::regex data(R"((\d{2})\.(\d{2})\.(\d{4}))");
std::cout << std::regex_replace(jurnal, data, "$3-$2-$1") << '\n';
std::cout << std::regex_replace(jurnal, data, "[$&]") << '\n';
}
Rezultat
Livrat 2026-10-19, retur 2026-11-02
Livrat [19.10.2026], retur [02.11.2026]
Exemplul 3: Doar prima potrivire
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string s = "eroare, eroare, eroare";
std::cout << std::regex_replace(s, std::regex("eroare"), "OK",
std::regex_constants::format_first_only) << '\n';
}
Rezultat
OK, eroare, eroare
Greșeli frecvente
- Vrei un
$literal în textul de înlocuire (de exemplu un preț în dolari) și scrii doar$: dacă urmează o cifră, este interpretat ca grup. Scrie$$. - Folosești
regex_replacepentru o înlocuire simplă de text fix într-o buclă mare: e mult mai lent decâtfind+replace.
Comenzi înrudite
std::regex: O expresie regulată compilată, folosită pentru verificarea, căutarea și înlocuirea textului.std::regex_search: Caută prima porțiune din text care se potrivește cu modelul, oriunde în text.std::string::replace: Înlocuiește porțiunea de n caractere de la poziția poz cu alt text.