正则表达式匹配由m个空格分隔的n个单词的输入

时间:2016-12-15 13:27:40

标签: c++ regex c++11

所以我正在学习c ++ 11中的正则表达式,我正在尝试创建一个正则表达式来匹配由M个空格分隔的N个单词的输入。 因此,例如,您输入“单词单词单词...”,您可以继续这样持续多长时间。

现在,当我在将输入与正则表达式进行比较后尝试访问smatch变量中的字段时出现了问题。目前我所拥有的是:

#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;
            }
        }

问题在于,由于某种原因,我得到了一个匹配,但当我尝试cout所有字段以查看它是否有效时我只得到初始匹配和第一个字段,没有别的:

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

我做错了什么?

编辑:输入如我的代码的cout示例所示,由于某种原因,它没有显示文本中的所有空格。

0 个答案:

没有答案