文档章节

boost::regex_match

恋恋美食
 恋恋美食
发布于 2016/09/07 17:10
字数 231
阅读 182
收藏 0

 

#include <iostream>
#include <boost/regex.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/algorithm/string.hpp>

#define DEMO_EXPRESSION "^select ([a-zA-Z]*) from ([a-zA-Z]*)$"

/**
 * Simple test if string match the regular expression.
 *
 * @param str    Input string be testing.
 * @param regStr Regular expression.
 * @return true when matched, else return false.
 */
bool isMatched(const std::string &str, const std::string &regStr)
{
    boost::regex reg(regStr);
    bool rc = boost::regex_match(str, reg);
    if(rc)
    {
        std::cout << "String matched: " << str << std::endl;
    }
    else 
    {
        std::cout << "String not matched: " << str << std::endl;
    }

    return rc;
}


/**
 * Match string and print result.
 *
 * @param str    Input string be testing.
 * @param regStr Regular expression.
 * @return true when matched, else return false.
 */
bool getMatched(const std::string &str, const std::string &regStr)
{
    boost::cmatch what;
    boost::regex reg(regStr);
    if(boost::regex_match(str.c_str(), what, reg))
    {
        std::cout << "Matched Size: " << what.size() << std::endl;

        for (int i = 0; i < what.size(); i++)
        {
            if(what[i].matched)
            {
                std::cout << "Matched string: " << what[i].str() << std::endl;
            }
        }
        
        return true;
    }

    std::cout << "Not matched: " << str << std::endl;
    
    return false;
}

int main()
{
    std::string goodStr = "select name from table";
    std::string badStr  = "select name xxxx table";
    
    isMatched(goodStr, DEMO_EXPRESSION);
    isMatched(badStr, DEMO_EXPRESSION);
    getMatched(goodStr, DEMO_EXPRESSION);
    getMatched(badStr, DEMO_EXPRESSION);
}

 

Output:

String matched: select name from table
String not matched: select name xxxx table
Matched Size: 3
Matched string: select name from table
Matched string: name
Matched string: table
Not matched: select name xxxx table

 

© 著作权归作者所有

上一篇: boost::split
下一篇: boost::lexical_cast
恋恋美食

恋恋美食

粉丝 122
博文 201
码字总数 199551
作品 0
杭州
高级程序员
私信 提问
加载中

评论(0)

C++ boost 正则表达式用法

什么是正则表达式?正则表达式是一种用来描述一定数量文本的模式。Regex代表Regular Express。 如果您不知道什么是正则表达式,请看这篇文章http://blog.csdn.net/begtostudy/archive/2007/...

zungyiu
2010/12/25
1K
0
正则表达式使用范例 Linux C++

POSIX正则库使用 基本介绍: POSIX(Portable Operating System Interface of Unix) 是unix系统提供的系统级通用正则库。 四个主要接口:regcomp, regexec, regerror, regfree (可以通过man命...

香芋
2012/06/11
1.4K
0
VS2008中使用正则表达式库Boost.Regex

VS2008中使用正则表达式库Boost.Regex 2011-04-14 10:10

香芋
2012/06/08
538
0
介绍 ATL CAtlRegExp,GRETA,Boost::regex 等正则表达式库

本文摘要翻译了几篇文章的内容,简单介绍 ATL CAtlRegExp,GRETA,Boost::regex 等正则表达式库,这些表达式库使我们可以方便地利用正则库的巨大威力,给我们的工作提供了便利。   正则表达...

香芋
2012/06/08
1K
0
boost 正则表达式 拆分了我的中文字符,来匹配字符成功

描述: 我用的boost::regex_match()来比较传入字符串,我传入要查找的字符串是“中”,然后要和“手心手背”字符串比较,结果匹配成功。 原因: 中文字符占2个字节,匹配时,把前个字符的后...

_Br
2014/05/10
822
1

没有更多内容

加载失败,请刷新页面

加载更多

如何用Python增强Excel,减少处理复杂数据的痛苦?

Excel既是一种祝福,也是一种诅咒。 当涉及到足够小的数据和足够简单的操作时,Excel是王道。然而,一旦发现自己在努力走出这些区域,它就会变成一种痛苦。 当然,可以使用ExcelVBA来解决这些...

Python圈子
8分钟前
10
0
Apache配置虚拟目录+Zend Studio访问

1 概述 Apache配置虚拟目录,然后可以通过Zend Studio的工程去访问,只需要修改Apache的httpd.conf文件. 2 修改httpd.conf 找到Apache安装目录下的httpd.conf,在末尾加上: <IfModule dir_modul...

氷泠
9分钟前
16
0
Android知识体系总结2020之Android部分控件篇

初级 1.基础布局 线性布局(LinearLayout) 相对布局(RelativeLayout) 约束布局(ConstraintLayout) 网格布局(GridLayout) 表格布局(TableLayout) 帧布局(FrameLayout) 绝对布局(AbsoluteLayout...

ClAndEllen
11分钟前
17
0
为什么要分库分表?

随着近些年信息化大跃进,各行各业无纸化办公产生了大量的数据,而越来越多的数据存入了数据库中。当使用MySQL数据库的时候,单表超出了2000万数据量就会出现性能上的分水岭。 并且物理服务器...

php开源社区
13分钟前
17
0
关于STM32的裸机多任务多线程心得

多任务多线程 多任务"并行处理" 首先我们来理解一下并行处理,初学者写程序通常是顺序执行,当我们逐渐想成为“专业”人士的时候顺序执行 的程序已经不能满足我们了,所以就需要多任务多线程...

shzwork
14分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部