Welcome to another exciting lesson on C++! Today, we're going to dive into the world of text search with std::regex_search. This powerful tool is a part of the C++ Standard Library, and it allows you to perform regular expression searches in your code. Let's get started!
std::regex_search? šstd::regex_search is a function in the C++ Standard Library that searches a string for a match with a regular expression. It returns a std::match_results object, which contains information about the match, such as its location and the sub-strings matched by each part of the regular expression.
std::regex_search? š”Regular expressions (regex) are a powerful tool for pattern matching in strings. They are used extensively in text processing, data validation, and many other areas. std::regex_search makes it easy to perform these operations in your C++ code.
std::regex_search šÆBefore we dive into an example, let's take a quick look at the syntax of std::regex_search.
#include <regex>
bool regex_search(const string &subject, const regex &pattern, smatch &matches);subject: The string you want to search in.pattern: The regular expression to search for.matches: A smatch object that will hold the results of the search, if a match is found.Let's see std::regex_search in action with a simple example. We'll write a program that searches for all occurrences of the word "example" in a given string.
#include <iostream>
#include <string>
#include <regex>
int main() {
std::string str = "This is an example string. This string contains multiple examples.";
std::regex pattern(R"(example)"); // Define the regular expression
std::sregex_iterator search_begin(str.begin(), str.end(), pattern);
std::sregex_iterator search_end;
while (search_begin != search_end) {
std::cout << "Match found: " << search_begin->str() << std::endl;
search_begin++;
}
return 0;
}In this example, we first define a string str that we want to search in. Then, we create a regular expression pattern that matches the word "example". We use the sregex_iterator class to perform the search and print out each match we find.
Let's take a look at a more advanced example, where we use std::regex_search to validate an email address.
#include <iostream>
#include <string>
#include <regex>
bool is_valid_email(const std::string &email) {
std::regex pattern(R"(([a-zA-Z0-9\._-]+)@([a-zA-Z0-9_-]+)\.(com|org|net))");
std::sregex_match match(email, pattern);
return match;
}
int main() {
std::string email = "test@example.com";
if (is_valid_email(email)) {
std::cout << "Email is valid." << std::endl;
} else {
std::cout << "Email is not valid." << std::endl;
}
return 0;
}In this example, we define a function is_valid_email that takes an email address as a string and returns true if the email address is valid, and false otherwise. We use a regular expression to match common email address formats. If the email address matches the pattern, the function returns true.
Which header file do you need to include to use `std::regex_search` in your C++ code?
That's it for today! We hope you enjoyed learning about std::regex_search in C++. In the next lesson, we'll dive deeper into regular expressions and explore more advanced features of std::regex.
Until then, happy coding! š»