Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8605889
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 12, 20262026-06-12T02:57:27+00:00 2026-06-12T02:57:27+00:00

I am trying to use std::regex in a C++11 piece of code, but it

  • 0

I am trying to use std::regex in a C++11 piece of code, but it appears that the support is a bit buggy. An example:

#include <regex>
#include <iostream>

int main (int argc, const char * argv[]) {
    std::regex r("st|mt|tr");
    std::cerr << "st|mt|tr" << " matches st? " << std::regex_match("st", r) << std::endl;
    std::cerr << "st|mt|tr" << " matches mt? " << std::regex_match("mt", r) << std::endl;
    std::cerr << "st|mt|tr" << " matches tr? " << std::regex_match("tr", r) << std::endl;
}

outputs:

st|mt|tr matches st? 1
st|mt|tr matches mt? 1
st|mt|tr matches tr? 0

when compiled with gcc (MacPorts gcc47 4.7.1_2) 4.7.1, either with

g++ *.cc -o test -std=c++11
g++ *.cc -o test -std=c++0x

or

g++ *.cc -o test -std=gnu++0x

Besides, the regex works well if I only have two alternative patterns, e.g. st|mt, so it looks like the last one is not matched for some reasons. The code works well with the Apple LLVM compiler.

Any ideas about how to solve the issue?

Update one possible solution is to use groups to implement multiple alternatives, e.g. (st|mt)|tr.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-12T02:57:28+00:00Added an answer on June 12, 2026 at 2:57 am

    <regex> was implemented and released in GCC 4.9.0.

    In your (older) version of GCC, it is not implemented.

    That prototype <regex> code was added when all of GCC’s C++0x support was highly experimental, tracking early C++0x drafts and being made available for people to experiment with. That allowed people to find problems and give feedback to the standard committee before the standard was finalised. At the time lots of people were grateful to have had access to bleeding edge features long before C++11 was finished and before many other compilers provided any support, and that feedback really helped improve C++11. This was a Good ThingTM.

    The <regex> code was never in a useful state, but was added as a work-in-progress like many other bits of code at the time. It was checked in and made available for others to collaborate on if they wanted to, with the intention that it would be finished eventually.

    That’s often how open source works: Release early, release often — unfortunately in the case of <regex> we only got the early part right and not the often part that would have finished the implementation.

    Most parts of the library were more complete and are now almost fully implemented, but <regex> hadn’t been, so it stayed in the same unfinished state since it was added.

    Seriously though, who though that shipping an implementation of regex_search that only does “return false” was a good idea?

    It wasn’t such a bad idea a few years ago, when C++0x was still a work in progress and we shipped lots of partial implementations. No-one thought it would remain unusable for so long so, with hindsight, maybe it should have been disabled and required a macro or built-time option to enable it. But that ship sailed long ago. There are exported symbols from the libstdc++.so library that depend on the regex code, so simply removing it (in, say, GCC 4.8) would not have been trivial.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm trying to use std::string instead of char* whenever possible, but I worry I
I am trying to use std::shared_ptr in my code. I have seen there have
This does not work. I'm trying to learn how to use std::copy but I
I am trying use std::copy to copy from two different iterator. But during course
I am trying to run the getting started example: #include <boost/lambda/lambda.hpp> #include <iostream> #include
I'm trying to use some code that I wrote on another computer that splits
I'm trying to use std:getline() but getting a strange runtime error: malloc: * error
Hi I am trying to use std::thread with G++. Here is my test code
I'm trying to use std::function in conjunction with std::bind , but I'm having some
I am trying to use the std::map template, but I haven't been able to

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.