regex_replace в C ++ | Замените совпадение строки с помощью regex_replace
std :: regex_replace () используется для замены всех совпадений в строке,
Синтаксис:
regex_replace (тема, regex_object, replace_text)
Параметры: принимает три параметра, которые описаны ниже:
- Строка темы в качестве первого параметра.
- Объект регулярного выражения в качестве второго параметра.
- Строка с текстом замены в качестве третьего параметра.
Возвращаемое значение: функция возвращает новую строку с примененными заменами.
- $ & или $ 0 используются для вставки полного совпадения регулярного выражения.
- $ 1, $ 2,… до $ 9 используются для вставки текста, совпадающего с первыми девятью группами захвата.
- $ `(обратная галочка) используется для вставки строки, оставшейся от совпадения.
- $ '(кавычка) используется для вставки строки справа от совпадения.
- Если количество групп захвата меньше запрошенного, то это не будет заменено ничем.
Примеры:
Предположим, что объект регулярного выражения 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 это все о