smatch | Regex (Regular Expressions) in C++ Last Updated : 18 Jan, 2023 Comments Improve Suggest changes Like Article Like Report 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: CPP #include <bits/stdc++.h> using namespace std; int main() { string sp("geeksforgeeks"); regex re("(geeks)(.*)"); // flag type for determining the matching behavior // && here it is for matches on strings. smatch match; // we can use member function on match // to extract the matched pattern. if (regex_search(sp, match, re) == true) { // The size() member function indicates the // number of capturing groups plus one for the overall match // match size = Number of capturing group + 1 // (.*) which "forgeeks" ). cout << "Match size = " << match.size() << endl; // Capturing group is index from 0 to match_size -1 // .....here 0 to 2 // pattern at index 0 is the overall match "geeksforgeeks" // pattern at index 1 is the first capturing group "geeks" // pattern at index 2 is the 2nd capturing group "forgeeks" cout << "Whole match : " << match.str(0) << endl; cout << "First capturing group is '" << match.str(1) << "' which is captured at index " << match.position(1) << endl; cout << "Second capturing group is '" << match.str(2) << "' which is captured at index " << match.position(2) << endl; } else { cout << "No match is found" << endl; } return 0; } 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 More infoAdvertise with us Next Article smatch | Regex (Regular Expressions) in C++ V vivek kumar 9 Follow Improve Article Tags : C++ Practice Tags : CPP Similar Reads std::regex_match, std::regex_replace() | Regex (Regular Expression) In C++ Regex is the short form for âRegular expressionâ, which is often used in this way in programming languages and many different libraries. It is supported in C++11 onward compilers.Function Templates used in regex regex_match() -This function return true if the regular expression is a match against th 3 min read How to Validate MICR Code using Regular Expression? MICR stands for Magnetic Ink Character Recognition. This technology provides transaction security, ensuring the correctness of bank cheques. MICR code makes cheque processing faster and safer. MICR Technology reduces cheque-related fraudulent activities. Structure of a Magnetic Ink Character Recogni 5 min read Validating Bank Account Number Using Regular Expressions A bank account number is a unique number that is assigned to the account holder after opening their account in any specific bank. In technical terms, we can consider the Bank account number as the Primary Key. A bank account number enables us to do debit, credit, and other transactions. As per RBI G 6 min read regex_error in C++ regex_error is present inside the Header "regex" and inside the Class regex_error;. It helps us to know about the errors which are thrown during the program execution, it defines the type of the object of exception in regular expressions library, Also describes an error in the construction or use of 2 min read std::basic_istream::ignore in C++ with Examples The std::basic_istream::ignore is used to extracts characters from the input string and discards them including delimiting character, i.e., if the end of the file is reached this function stops extracting characters. The delimiting character is the new line character i.e '\n'. This function will als 2 min read Like