`

boost正则表达式

阅读更多
xpressive是boost的正则表达式库,它比boost.regex要好的是它不需要编译,速度快。

匹配(char*)
#include<boost/xpressive/xpressive_dynamic.hpp>
#include<iostream>
using namespace std;

int main()
{
    using namespace boost::xpressive;

    char* str = "there is a POWER-suit item";
    cregex reg = cregex::compile("(power)-(.{4})",icase);//icase:忽略大小写
    assert(regex_search(str,reg));

    cmatch what;
    regex_search(str,what,reg);
    assert(what.size()==3);

    cout << what[0] << "," << what[1] << "," << what[2] << endl;
}

POWER-suit,POWER,suit


匹配(string)
#include<boost/xpressive/xpressive_dynamic.hpp>
#include<iostream>
using namespace std;

int main()
{
    using namespace boost::xpressive;

    string str("Power-bomb,power-suit,pOWER-beam all items\n");

    sregex reg = sregex::compile("power-(\\w{4})",icase);

    sregex_iterator pos(str.begin(),str.end(),reg);
    sregex_iterator end;
    while(pos!=end)
    {
        cout << (*pos)[0] << " ";
        ++pos;
    }
    cout << endl;
}

Power-bomb power-suit pOWER-beam 


替换
#include<boost/xpressive/xpressive_dynamic.hpp>
#include<iostream>
using namespace std;

int main()
{
    using namespace boost::xpressive;

    string str("readme.txt");

    sregex reg1 = sregex::compile("(.*)(me)");
    sregex reg2 = sregex::compile("(t)(.)(t)");

    cout << regex_replace(str,reg1,"manual") << endl;
    cout << regex_replace(str,reg1,"$1you") << endl;//$:匹配行的末尾 readyou
    cout << regex_replace(str,reg1,"$&$&") << endl;
    cout << regex_replace(str,reg2,"$1N$3") << endl;

    str = regex_replace(str,reg2,"$1$3");
    cout << str << endl;
}

manual.txt
readyou.txt
readmereadme.txt
readme.tNt
readme.tt
分享到:
评论

相关推荐

    boost 正则表达式详解

    boost正则表达式教程 boost正则表达式详解

    C++ BOOST 正则表达式使用教程

    C++ BOOST 正则表达式使用教程 正则表达式是一种用来描述一定数量文本的模式,用于匹配和处理大量规则的文本格式。 Regex 代表 Regular Express。C++ 中使用 Boost 库的 regex 类来实现正则表达式。 正则表达式的...

    bcb封装的BOOST正则表达式库

    **WYHREGEX:一个自定义的BOOST正则表达式库封装** "WYHREGEX"是你个人编写的,基于BOOST库的正则表达式类库。这个库可能提供了一种类似于C#的调用方式,这意味着即便在C++环境中,开发者也能享受到与C#相似的正则...

    Boost_Regex_C_正则表达式快速入门.pdf

    ### Boost正则表达式库的优越性 Boost库中的正则表达式模块,被誉为C++领域中最为出色、功能齐全且性能高效的正则表达式库。相比于其他语言(如Perl、Python)内置的正则表达式支持,C++长期缺乏与之媲美的解决方案...

    boost库中的正则表达式

    在C++编程中,Boost库是一个非常重要的工具集,提供了许多高级功能,其中包括对正则表达式的支持。Boost库中的正则表达式模块提供了一种高效且强大的方式来处理文本模式匹配。本节将深入探讨Boost库中的正则表达式...

    VC、VC++,MFC 正则表达式类库

    在标准C++库中,虽然没有内置的正则表达式支持,但通过包含如 Boost 或 TR1(Technical Report 1)扩展,或者在较新的C++11及更高版本中使用库,开发者可以实现正则表达式功能。然而,对于MFC开发者来说,使用MFC内...

    c++写的正则表达式验证工具

    Boost库的正则表达式组件,即`boost::regex`,是C++实现正则表达式的常用选择之一,它提供了一套完整的API接口,使得在C++中编写正则表达式相关的代码变得相对简单。 在Visual Studio 2008环境下,开发者可以将...

    ff.rar_Boost_正则表达式

    Boost正则表达式库是其中一个关键组件,它提供了对Perl风格正则表达式的支持,使得开发者能够方便地进行文本模式匹配和处理。 正则表达式是一种用于匹配字符串的强大工具,它通过定义一种模式来查找、替换或分割...

    C++ 使用正则表达式demo

    4. **使用Boost正则表达式**: - `boost::regex`类是Boost库中的主要正则表达式类,可以用来创建正则表达式对象。 - `boost::regex_match`用于检查整个字符串是否匹配正则表达式。 - `boost::regex_search`可以...

    C++正则表达式-regex类(不依赖其他库)

    `boost`库虽然提供了强大的正则表达式支持,但它是一个大型的库,可能会增加程序的体积和编译时间。因此,如果你的项目只需要正则表达式功能,而不需要其他`boost`库的特性,那么这个轻量级的DLL是一个很好的选择。`...

    c++正则表达式boost编译好的库和头文件及一个例子

    使用Boost正则表达式的基本步骤如下: 1. **包含头文件**:在你的C++源代码中,首先需要包含`boost/regex.hpp`头文件,以引入正则表达式相关的类和函数。 ```cpp #include &lt;boost/regex.hpp&gt; ``` 2. **创建正则...

    c++用的正则表达式包

    `regex.htm`可能是一个关于Boost正则表达式的HTML文档,包含教程或API参考,帮助开发者理解和使用该库。`boost`目录可能包含了Boost库的所有源代码和头文件,而`libs`可能是Boost库中的子模块,其中包括了正则表达式...

    正则表达式.zip

    本压缩包包含了一份关于C++_boost正则表达式用法的PDF文档和一份正则表达式入门与进阶的DOC文档,将帮助我们深入理解并掌握正则表达式在C++中的应用。 首先,`boost::regex`库提供了大量的函数和类,使得在C++中...

    VC++支持中文的正则表达式函数库

    - **性能**:尽管库是为VC++定制的,但其性能可能与原生的正则表达式库(如Boost.Regex或std::regex)有所差异,需要根据实际需求进行评估。 - **错误处理**:使用过程中可能出现匹配失败或编译错误,需要妥善处理...

    MFC中利用正则表达式进行密码匹配

    或者,可以使用Boost库,它提供了更丰富的正则表达式功能。 6. **代码实现**: - 在对话框类中,通常会有一个成员变量,比如`CEdit`,用于存储用户的输入(即密码)。 - 创建一个成员函数,如`...

    vc++6.0环境下的使用boost库实现正则表达式

    现在,Boost库已经在VC++ 6.0环境中配置完成,我们可以开始编写使用Boost正则表达式的代码。首先,需要包含必要的头文件`#include &lt;boost/regex.hpp&gt;`。Boost的正则表达式库提供了`boost::regex`类,可以方便地进行...

    MFC自带的stl正则表达式的使用

    在IT行业中,STL(Standard Template Library,标准模板库)是C++编程中不可或缺的一部分,它...在实际应用中,可以根据具体需求选择是否使用MFC内置的正则表达式,或者引入第三方库如Boost或PCRE来获取更全面的功能。

Global site tag (gtag.js) - Google Analytics