regex_replace in C++ | Replace the match of a string using regex_replace
std::regex_replace() is used to replace all matches in a string,
Syntax:
regex_replace(subject, regex_object, replace_text)
Parameters: It accepts three parameters which are described below:
- Subject string as the first parameter.
- The regex object as the second parameter.
- The string with the replacement text as the third parameter.
Return Value: Function returns a new string with the replacements applied.
- $& or $0 is used to insert the whole regex match.
- $1, $2, … up to $9 is used to insert the text matched by the first nine capturing groups.
- $` (back-tick) is used to insert the string that is left of the match.
- $’ (quote) is used to insert the string that is right of the match.
- If number of capturing group is less than the requested, then that will be replaced by nothing.
Examples:
Suppose a regex object re(“(Beginner)(.*)”) is created and the subject string is: subject(“its all about w3wiki”), you want to replace the match by the content of any capturing group (eg $0, $1, … upto 9).
Example-1:
Replace the match by the content of $1.
Here match is “w3wiki” that will be replaced by $1(“Beginner”).
Hence, result “its all about Beginner”.Example-2:
Replace the match by the content of $2.
Here match is “w3wiki” that will be replaced by $2(“forBeginner”).
Hence, result “its all about forBeginner”.
Below is the program to show the working of 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 w3wiki" ); string result1, result2, result3, result4; string result5; // regex object regex re( "(Beginner)(.*)" ); // $2 contains, 2nd capturing group which is (.*) means // string after "Beginner" which is "forBeginner". hence // the match(w3wiki) will be replaced by "forBeginner". // so the result1 = "its all about forBeginner" result1 = regex_replace(subject, re, "$2" ); // similarly $1 contains, 1 st capturing group which is // "Beginner" so the match(w3wiki) will be replaced // by "Beginner".so the result2 = "its all about Beginner". 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; } |
its all about forBeginner its all about Beginner its all about w3wiki its all about w3wiki its all about