12

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?

Trevor Hickey
  • 36,288
  • 32
  • 162
  • 271

1 Answers1

8

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.

Benjamin Lindley
  • 101,917
  • 9
  • 204
  • 274