Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you print a std::regex?

How do you print the string representation of a std::regex?

Say I have a collection of patterns, and I'd like to print the first one that matches:

std::vector<std::regex>> patterns = Get();
for (auto pattern: patterns){
  if (std::regex_match("file.txt",pattern)){
    std::cout << "matched on pattern: " << /* ? pattern ? */ << '\n';
  }
}

std::cout will not work on std::regex.

There doesn't seem to be any methods to get the string representation.

Are we expected to carry around a string separately, or am I missing something in the docs?

like image 237
Trevor Hickey Avatar asked Nov 13 '16 04:11

Trevor Hickey


1 Answers

There doesn't seem to be any methods to get the string representation.

Correct. It is not even specified that the std::regex even saves your expression in the form you gave it, which might be the case if the implementation decides to use some more optimized format.

like image 95
Benjamin Lindley Avatar answered Oct 09 '22 01:10

Benjamin Lindley