docs:programming:cpp:boost:regex_example

regex example

#include <string>
#include <iostream>
#include <boost/regex.hpp>
 
int main(int argc, char* argv[]){
 
	std::string input;
	if(argc > 1){
		input = argv[1];
	}else{
		std::cin >> input;
	}
 
	// note that an escape slash \ needs escaped itself
	static const boost::regex email("^([^@]+)@([^@]+)\\.([^.]+)$");
	if( regex_match(input, email) ){
		std::cout << "Matched OK" << std::endl;
	}else{
		std::cout << "No match" << std::endl;
	}
 
	return 0;
}

A sub-expression match retains the components specified in parethesis () for later use.

#include <string>
#include <iostream>
#include <boost/regex.hpp>
 
int main(int argc, char* argv[]){
 
	std::string input;
	if(argc > 1){
		input = argv[1];
	}else{
		std::cin >> input;
	}
 
	// note that an escape slash \ needs escaped itself
	boost::regex email("^([^@]+)@([^@]+)\\.([^.]+)$");
	boost::cmatch what;
	if( regex_match(input.c_str(), what, email) ){
		std::cout << "Matched OK" << std::endl;
		std::cout << "Account Name: " << what[1] << std::endl;
		std::cout << "Computer Name/Subdomain: " << what[2] << std::endl;
		std::cout << "Domain: " << what[3] << std::endl;
	}else{
		std::cout << "No match" << std::endl;
	}
 
	return 0;
}

* this command was specific to a particular boost version and my configuration; the static version of the regex library was used

c++ -I/usr/local/include/boost-1_37/ -o boostregex boostregex.cpp /usr/local/lib/libboost_regex-xgcc40-mt.a
  • docs/programming/cpp/boost/regex_example.txt
  • Last modified: 2009/02/14 12:56
  • by billh