1 ? " problems\n" : " problem\n"); // Outputs: "\t1 problem\n" cout << "Now they have " << count + 1 << " problems.\n"; // Ouputs: "Now they have 2 problems\n" } }"> 1 ? " problems\n" : " problem\n"); // Outputs: "\t1 problem\n" cout << "Now they have " << count + 1 << " problems.\n"; // Ouputs: "Now they have 2 problems\n" } }"> 1 ? " problems\n" : " problem\n"); // Outputs: "\t1 problem\n" cout << "Now they have " << count + 1 << " problems.\n"; // Ouputs: "Now they have 2 problems\n" } }">
const auto input = "Some people, when confronted with a problem, think \\"I know, I'll use regular expressions.\\""s;
smatch sm;

cout << input << endl;

// If input ends in a quotation that contains a word that begins with "reg" and another word begining with "ex" then capture the preceeding portion of input
if (regex_match(input, sm, regex("(.*)\\".*\\\\breg.*\\\\bex.*\\"\\\\s*$"))) {
    const auto capture = sm[1].str();
    
    cout << '\\t' << capture << endl; // Outputs: "\\tSome people, when confronted with a problem, think\\n"
    
    // Search our capture for "a problem" or "# problems"
    if(regex_search(capture, sm, regex("(a|d+)\\\\s+problems?"))) {
        const auto count = sm[1] == "a"s ? 1 : stoi(sm[1]);
        
        cout << '\\t' << count << (count > 1 ? " problems\\n" : " problem\\n"); // Outputs: "\\t1 problem\\n"
        cout << "Now they have " << count + 1 << " problems.\\n"; // Ouputs: "Now they have 2 problems\\n"
    }
}

Live Example