regex_replace в C ++ | Замените совпадение строки с помощью regex_replace

Опубликовано: 30 Декабря, 2021

std :: regex_replace () используется для замены всех совпадений в строке,

Синтаксис:

regex_replace (тема, regex_object, replace_text)

Параметры: принимает три параметра, которые описаны ниже:

  1. Строка темы в качестве первого параметра.
  2. Объект регулярного выражения в качестве второго параметра.
  3. Строка с текстом замены в качестве третьего параметра.

Возвращаемое значение: функция возвращает новую строку с примененными заменами.

  1. $ & или $ 0 используются для вставки полного совпадения регулярного выражения.
  2. $ 1, $ 2,… до $ 9 используются для вставки текста, совпадающего с первыми девятью группами захвата.
  3. $ `(обратная галочка) используется для вставки строки, оставшейся от совпадения.
  4. $ '(кавычка) используется для вставки строки справа от совпадения.
  5. Если количество групп захвата меньше запрошенного, то это не будет заменено ничем.

Примеры:
Предположим, что объект регулярного выражения re («(geeks) (. *)») Создан, а строка темы: subject («все о geeksforgeeks») , вы хотите заменить совпадение содержимым любой группы захвата (например, $ 0 , $ 1,… до 9).

Example-1:
Replace the match by the content of $1.
Here match is “geeksforgeeks” that will be replaced by $1(“geeks”).
Hence, result “its all about geeks”.

Example-2:
Replace the match by the content of $2.
Here match is “geeksforgeeks” that will be replaced by $2(“forgeeks”).
Hence, result “its all about forgeeks”.

Ниже приведена программа, показывающая работу regex_replace.

// C++ program to show the working
// of regex_replace
#include <bits/stdc++.h>
using namespace std;
int main()
{
string subject( "its all about geeksforgeeks" );
string result1, result2, result3, result4;
string result5;
// regex object
regex re( "(geeks)(.*)" );
// $2 contains, 2nd capturing group which is (.*) means
// string after "geeks" which is "forgeeks". hence
// the match(geeksforgeeks) will be replaced by "forgeeks".
// so the result1 = "its all about forgeeks"
result1 = regex_replace(subject, re, "$2" );
// similarly $1 contains, 1 st capturing group which is
// "geeks" so the match(geeksforgeeks) will be replaced
// by "geeks".so the result2 = "its all about geeks".
result2 = regex_replace(subject, re, "$1" );
// $0 contains the whole match
// so result3 will remain same.
result3 = regex_replace(subject, re, "$0" );
// $0 and $& contains the whole match
// so result3 will remain same
result4 = regex_replace(subject, re, "$&" );
// Here number of capturing group
// is 2 so anything above 2
// will be replaced by nothing.
result5 = regex_replace(subject, re, "$6" );
cout << result1 << endl << result2 << endl;
cout << result3 << endl << result4 << endl
<< result5;
return 0;
}
Выход:
все дело в кузнях
все дело в гиках
это все о geeksforgeeks
это все о geeksforgeeks
это все о
Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
C++