正则表达式C++

1、使用类及函数

regex函数

正则表达式C++

2、正则表达式

自己定义的一些简单的正则表达式
namespace nsCrvt
{
  const string  rxNameModel      = "TotalFlrModelInfo\\.ini"                   ;  // 模型信息文件名
  const string  rxModelinf       = "\\[模型信息\\]"                            ;  // 模型信息文件内
  const string  rxModelStdF      = "\\[第(([0-9]){1,3})标准层\\]"              ;  // 模型信息文件内  最多支持999层

  const string  rxNameStdFType   = "_第(([0-9]){1,3})标准层yjkbimmodel\\.txt"  ;  // 标椎层文件名 最多支持999层
  const string  rxStdFType       = "(类型\\:)"                                 ;  // 类型:***

  
 const string  rxData  = "(([0-9]){1,10})";
  const string  rxAdd   = "(\\*|x|X)";
  const string  rxData0 = "(([0-9]){0,10})";
  const string  rxAdd0  = "((\\*|x|X){0,1})";
  
}

// 这个很好玩  
regex::flag_type flag = regex::ECMAScript | regex::icase; //默认语法  + 忽略大小写

3、正则使用示例

(1)sregex_iterator 使用示例

void Data(CString   mSectName)
{
    vector<string>   vctData;
    string strRx = rxData;
    string str = CW2A(mSectName);
    regex::flag_type flag = regex::ECMAScript /*| regex::icase*/; //默认语法 
    regex rx(strRx, flag);
    {
      sregex_iterator iter(str.begin(), str.end(), rx);
      std::sregex_iterator end;
      while (iter != end)
      {
        size_t nSize = iter->size();
        if (nSize >= 1)
        {
          string csstr = (*iter)[0];
          vctData.push_back(csstr);
        }
        iter++;        
       }
   }
}      

(2)regex_match 使用示例

  bool bMatch(CString   mSectName)
  {
    regex::flag_type flag = regex::ECMAScript /*| regex::icase*/; //默认语法 
    string strRx = rxH + rxData + rxAdd + rxData + rxAdd + rxData + rxAdd + rxData + rxAdd0 + rxData0 + rxAdd0 + rxData0;
    regex rx(strRx, flag);
    string str = CW2A(mSectName);
    match_results<string::const_iterator> match;
    bool bMatch = regex_match(str, match, rx);
    return   bMatch;
  }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MaHongKai

微信 2936729162

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值