首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增强正则表达式空格,后跟一个或多个星号

增强正则表达式空格,后跟一个或多个星号
EN

Stack Overflow用户
提问于 2012-09-14 07:02:29
回答 1查看 847关注 0票数 0

为什么下面的增强正则表达式没有返回我正在寻找的结果(以0或更多空格开头,后跟一个或多个星号)?

代码语言:javascript
复制
boost::regex tmpCommentRegex("(^\\s*)\\*+");

for (std::vector<std::string>::iterator vect_it =
    tmpInputStringLines.begin(); vect_it != tmpInputStringLines.end();
    ++vect_it) {

    boost::match_results<std::string::const_iterator> tmpMatch;
    if (boost::regex_match((*vect_it), tmpMatch, tmpCommentRegex,
        boost::match_default) == 0) {

        std::cout << "Found comment " << (*vect_it) << std::endl;
    } else {
        std::cout << "No comment" << std::endl;
    }
}

在以下输入上:

代码语言:javascript
复制
* Script 7
[P]%OMO      * change
[P]%QMS      * change
[T]%OMO      * change
[T]%QMM      * change
[S]%G1       * Resume
[]

这应该是

代码语言:javascript
复制
Found comment * Script 7
No comment
No comment 
No comment 
No comment 
No comment 
No comment 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-14 07:27:40

引用自documentation for regex_match

请注意,只有当表达式与输入序列的匹配时,结果才为真。如果您想搜索序列中某个位置的表达式,那么可以使用regex_search。如果希望匹配字符串的前缀,那么可以使用设置了match_continuous标志的regex_search

作为一个整体,您的正则表达式与您的输入行都不匹配,因此程序按预期工作。您应该使用regex_search来获得所需的行为。

此外,regex_matchregex_search都返回bool而不是int,因此测试== 0是错误的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12416018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档