0

So I'm learning regular expressions in c++11 and i'm trying to create a regular expression to match an input of N words separeted by M spaces. So, for example, you input " word word word word ..." and you can continue like this for how long you like.

Now my problems come when I try to access the fields in the smatch variable after comparing an input to the regular expression. At the moment what I have is:

#include <regex>

regex input_reg(
    "(?:[[:space:]]*"
    "([[:alpha:]_]+)"
    "[[:space:]]*)+");

smatch comparison;
if (regex_match(input, comparison, input_reg)){
            for (smatch::size_type i = 0; i < comparison.size(); ++i){
                cout << i << ": '" << comparison.str(i) << "'" << endl;
            }
        }

The problem with this is that for some reason, I get a match as I should but when I try to cout all the fields to see if it works I only get the initial match and the first field, nothing else:

0: ' word word            word  word '
1: 'word'

What am I doing wrong?

EDIT: The input is as seen in cout example of my code, it doesn't show all the spaces in the text for some reason.

Darkonode
  • 43
  • 5

0 Answers0