Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

regex_replace in C++ | Replace the match of a string using regex_replace

  • Difficulty Level : Hard
  • Last Updated : 04 Sep, 2018

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:

  1. Subject string as the first parameter.
  2. The regex object as the second parameter.
  3. The string with the replacement text as the third parameter.

Return Value: Function returns a new string with the replacements applied.

  1. $& or $0 is used to insert the whole regex match.
  2. $1, $2, … up to $9 is used to insert the text matched by the first nine capturing groups.
  3. $` (back-tick) is used to insert the string that is left of the match.
  4. $’ (quote) is used to insert the string that is right of the match.
  5. If number of capturing group is less than the requested, then that will be replaced by nothing.

Examples:
Suppose a regex object re(“(geeks)(.*)”) is created and the subject string is: subject(“its all about geeksforgeeks”), 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 “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”.

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 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;
}
Output:
its all about forgeeks
its all about geeks
its all about geeksforgeeks
its all about geeksforgeeks
its all about


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!