当前位置:  编程技术>c/c++/嵌入式

封装常用正则表达式的用法

    来源: 互联网  发布时间:2014-10-24

    本文导语:  regexhelper.h 代码如下:#ifndef REGEX_HELPER_H_INCLUDE#define REGEX_HELPER_H_INCLUDE#include#includenamespace Framework{class RegexHelper{public:    RegexHelper();    virtual ~RegexHelper();    /*    * 是否包含匹配字符串    * @param: input 输入字符串    * @param...

regexhelper.h

代码如下:

#ifndef REGEX_HELPER_H_INCLUDE
#define REGEX_HELPER_H_INCLUDE
#include
#include
namespace Framework{
class RegexHelper
{
public:
    RegexHelper();
    virtual ~RegexHelper();
    /*
    * 是否包含匹配字符串
    * @param: input 输入字符串
    * @param:pattern 正则表达式
    */
    static bool IsMatch(const char* input,const char* pattern);
    /*
    * 获取首个匹配字符串或其字串
    * @param: input 输入字符串
    * @param:pattern 正则表达式
    * @param:group 子捕获组
    */
    static std::string Match(const char* input,const char* pattern,int group = 0);
    /*
    * 获取首个匹配字符串所有捕获组
    * @param: input 输入字符串
    * @param:pattern 正则表达式
    * @param: results 输出的字符串数组
    */
    static int Match(const char* input,const char* pattern,std::vector& results);
    /*
    * 匹配字符串数目
    * @param: input 输入字符串
    * @param:pattern 正则表达式
    */
    static int Matches(const char* input,const char* pattern);
    /*
    * 输出所有匹配字符串或其捕获组
    * @param: input 输入字符串
    * @param:pattern 正则表达式
    * @param: results 输出的字符串数组
    * @param:group 捕获组
    */
    static int Matches(const char* input,const char* pattern,std::vector& results,int group = 0);
    /*
    * 替换首个匹配字符串
    * @param: input 输入字符串
    * @param:pattern 正则表达式
    * @param:repValue 被替换值,可以是捕获组的组合
    */
    static std::string ReplaceFirst(const char* input,const char* pattern,const char* repValue);
    /*
    * 替换所有匹配字符串
    * @param: input 输入字符串
    * @param:pattern 正则表达式
    * @param:repValue 被替换值,可以是捕获组的组合
    */
    static std::string ReplaceAll(const char* input,const char* pattern,const char* repValue);
    /*
    * 分割字符串并输出结果
    * @param: input 输入字符串
    * @param:pattern 正则表达式
    * @param: results 输出的字符串数组
    */
    static int Split(const char* input,const char* pattern,std::vector& results);
    /*
    * 分割字符串并根据捕获组输出
    * @param: input 输入字符串
    * @param:pattern 正则表达式
    * @param:subs 捕获组
    * @param: results 输出的字符串数组
    */
    static int Split(const char* input,const char* pattern,std::vector& subs,std::vector& results);

protected:
private:
};
}
#endif // REGEX_HELPER_H_INCLUDE

regexhelper.cpp

代码如下:

#include "regexhelper.h"
#include

namespace Framework{

RegexHelper::RegexHelper()
{
    //ctor
}

RegexHelper::~RegexHelper()
{
    //dtor
}
bool RegexHelper::IsMatch(const char* input,const char* pattern)
{
    boost::regex reg( pattern , boost::regex::perl|boost::regex::icase);
    bool ret = boost::regex_search( input , reg);
    return ret;
}
std::string RegexHelper::Match(const char* input,const char* pattern,int group)
{
    if(group < 0)group = 0;
    boost::cmatch mat;
    boost::regex reg( pattern , boost::regex::perl|boost::regex::icase);
    bool success = boost::regex_search( input, mat, reg);
    if(success){
        if(mat[group].matched){
            return std::string(mat[group]);
        }
    }
    return std::string("");
}
int RegexHelper::Match(const char* input,const char* pattern,std::vector& results)
{
    boost::cmatch mat;
    boost::regex reg( pattern , boost::regex::perl|boost::regex::icase );
    bool success =boost::regex_search( input, mat, reg);
    int total = 0;
    if(success){ //如果匹配成功
        //cout


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3