zoukankan      html  css  js  c++  java
  • 转:C++ Boost/tr1 Regex(正则表达式)快速指南

    C++ Boost/tr1 Regex(正则表达式)快速指南

    正则表达式自Boost 1.18推出,目前已经成为C++11(tr1)的标准部分。

    本文以Boost 1.39正则表达式为基础,应该广泛适用于其他版本的Boost。对namespace稍加修改,即可适用tr1标准。

    0、regex对象

    类似于Java中的Pattern,Boost中的正则表达式对象为:

    boost::regex

    常见构造方法2种:

    1、regex_match

    首先要明确match和search的区别:

    • match针对整个字符串,若整个串匹配,match返回true,否则false。
    • search非针对整串,若任意部分子串匹配,search返回true,否则false。

    明确了这点之后,来看regex_match的三种常见用法:

    (1) 使用string字符串、regex对象直接match。

    这个简单明了:若card_str全串匹配了,返回1,否则0。

    输出如下:

    (2) 使用迭代器替换string,并给regex加入参数

    如下所述,我们知道string的头3个、尾3个是垃圾字符,可以用迭代器指明match工作的begin和end位置。注意的是:boost中,不提供string、begin(int)、end(int)这种参数形式。

    同时,在构造regex的时候,我们给定了一个参数boost::regex::icase,表示该正则对象将忽略大小写!

    输出如下:

    (3) match,并返回分组的match result

    我们都知道,正则中的括号表示分组,例如:

    字符串和正则:

    pat3中有4个分组,则regex_match后,match result会形成5个分组,0为全串,1~4分别为1234、5678、4321、8765。

    好了,看下用法吧:

    输出如下:

    这里要再多解释一下,smatch是match_result的模版特例化类型,特别针对std::string的:

     2、regex_search

    下面考虑对字符串任意部分匹配的regex_search。

  • 相关阅读:
    ubuntu下pip的安装和使用
    跨域总结
    本地存储小结
    SVN
    appium整理文档
    appium python andiroid自动化文档整理笔记
    Python 接口测试(二)
    Python 接口测试(一)
    Python 接口测试(四)
    Python 接口测试(三)
  • 原文地址:https://www.cnblogs.com/kira2will/p/4146120.html
Copyright © 2011-2022 走看看