我正在尝试用 Boost 解析一个简单的句子结构。这是我第一次使用 Boost,所以我可能做错了。我想要做的只是接受这种格式的字符串:
- 必须以字母开头(不区分大小写)
- 可能含有:
- 字母字符
- 数字字符
- 下划线
- 连字符
- 所有其他字符用作分隔符
由于我不知道我的分隔符是什么字符(可能有很多),我试图制作一个对此敏感的正则表达式。唯一的问题是,我只得到每个单词的最后一个字母。这让我相信我的正则表达式是正确的,但我对 boost 的使用却不是。这是我的代码:
boost::regex regexp("[A-Za-z]([A-Za-z]|[0-9]|_|-)*", boost::regex::normal | boost::regbase::icase);
boost::sregex_token_iterator i(text.begin(), text.end(), regexp, 1);
boost::sregex_token_iterator j;
while(i != j){
cout << *i++ << std::endl;
}
我根据我在Boost 网站上找到的内容对此进行了建模。我使用最后一个示例(在页面底部)作为构建 mf 代码的模板。在这种情况下,文本是字符串类型的对象。
我的正则表达式是否正确?我是否正确使用了 boost?