VOOZH about

URL: https://www.geeksforgeeks.org/cpp/smatch-regex-regular-expressions-in-c/

⇱ smatch | Regex (Regular Expressions) in C++ - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

smatch | Regex (Regular Expressions) in C++

Last Updated : 18 Jan, 2023

smatch is an instantiation of the match_results class template for matches on string objects. Functions that can be called using smatch: str(), position(), and length() member functions of the match_results object can be called to get the text that was matched, or the starting position and its length of the match relative to the subject string.

  • Call these member functions without a parameter or with 0 as the parameter to get the overall regex match.
  • Call them passing 1 or greater to get the match of a particular capturing group.
  • The size() member function indicates the number of capturing groups plus one for the overall match.
  • Thus you can pass a value up to size()-1 to the other three member functions(str(), position(), length() ).

What is capturing group ? Examples: 

Example-1:
Suppose you create a regex object like : regex re("(geeks)(.*)") 
Here no of capturing group is = 2 
[ one is "geeks" and second is any character after "geeks" ].

Example-2:
regex re("a(b)c")
Here no of capturing group is = 1[ 'b' is the capturing group].
whatever within '(' and ')' braces is treated as capturing group.

Below is the program to show the working of smatch: 

Output:
Match size = 3
Whole match : geeksforgeeks
First capturing group is 'geeks' which is captured at index 0
Second capturing group is 'forgeeks' which is captured at index 5

Time Complexity: O(n)
Auxiliary Space: O(1)

Comment
Article Tags:
Article Tags: