所以我正在学习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示例所示,由于某种原因,它没有显示文本中的所有空格。