Функция regex_replace
Функция regex_replace выполняет поиск всех совпадений
с регулярным выражением в исходной строке и заменяет
их на указанную строку замены. Сама исходная строка
при этом не изменяется. В первый параметр мы передаем
исходную строку, во второй - объект regex с
регулярным выражением, а в третий - строку замены.
Функция возвращает новую строку, в которой все найденные
совпадения заменены. В строке замены можно использовать
специальные ссылки на захваченные группы, например
"$1", "$2" и так далее.
Синтаксис
regex_replace(str, regex, replacement)
Пример
Давайте заменим все цифры в строке на символ '*':
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main()
{
string str = "abc123de45";
regex reg("[0-9]+");
string res = regex_replace(str, reg, "*");
cout << res << endl;
return 0;
}
Результат выполнения кода:
"abc*de*"
Пример
Давайте поменяем местами имя и фамилию, используя захваченные группы в строке замены:
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main()
{
string str = "Ivan Petrov";
regex reg("(\\w+) (\\w+)");
string res = regex_replace(str, reg, "$2 $1");
cout << res << endl;
return 0;
}
Результат выполнения кода:
"Petrov Ivan"
Пример
Давайте удалим все гласные буквы из строки, заменив их на пустую строку:
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main()
{
string str = "abcde";
regex reg("[aeiou]");
string res = regex_replace(str, reg, "");
cout << res << endl;
return 0;
}
Результат выполнения кода:
"bcd"
Смотрите также
-
функция
regex_match,
которая проверяет полное совпадение строки с регулярным выражением -
функция
regex_search,
которая ищет первое совпадение в строке -
класс
regex,
который представляет регулярное выражение -
класс
cmatch,
который хранит результаты совпадений для C-строк