There is a function to use pattern matching (using regular expressions) in C++?

There is a simple C++ method to use pattern matching on strings? The code should sound like this:

if (regexpcmp("l?nole*[0-9]", "linoleum1")) {
  //we have a match!
} else {
   //no match 
}

Answers


Not in the core language. Use Boost.Regex or an external library like pcre. In a unix environment you almost certainly have access to the BSD regular expression tools (regcomp, regerror, regexec, regfree) which are c-like rather than c++-like but do work.


Did you already look at Boost.Regex?

const boost::regex e("l?nole*[0-9]");
if (regex_match("linoleum1", e)) {
  //we have a match!
} else {
  //no match 
}

Take boost.regex friend. if you are not allowed to use boost (sadly, there are still companies doing this), you could look into pcrecpp, which is a C++ binding developed by google for the famous PCRE library.


A standard regex library (that is based on boost::regex) is available in the TR1 namespace if you use lasts versions of the most used compilers : std::tr1::regex.


Need Your Help

String pattern matching with one or zero mismatch

string algorithm pattern-matching string-matching knuth-morris-pratt

Given a string and a pattern to be matched, how efficiently can the matches be found having zero or one mismatch.

Sqlite not inserting data once the application is stopped and execute again iPhone

iphone objective-c database sqlite

Im developing a simple application in which it is creating a sqlite database and insert data into it.