C++11 Regex正则表达式初探

早就知道C++11标准增加了regex支持,昨天在VS2015试了下,很好用~

今天在linux的G++上一试,发现G++就是坑啊,一编译运行直接抛出regex_error异常,这才知道。G++到4.9才支持regex,以前就只是个壳子…, 更新到4.9.3后就能正常使用了~

其中主要的算法为regex_search, regex_match, regex_replace.

链接:一个比较好的regex参考

下面是一个简单的示例

#include <regex>
#include <string>
#include <iostream>
using namespace std;

int main() {
    // 是否匹配整个序列,第一个参数为被匹配的str,第二个参数为regex对象
    cout << regex_match("123", regex("[0-9]+")) << endl;

    // regex搜索
    string str = "subject";
    regex re("(sub)(.*)");
    smatch sm;   // 存放string结果的容器
    regex_match(str, sm, re);
    for(int i = 0; i < sm.size(); ++i)
        cout << sm[i] << " ";
    cout << endl;

    // regex搜索多次
    str = "!!!123!!!12333!!!890!!!";
    re = regex("[0-9]+");
    while(regex_search(str, sm, re)) {
        for(int i = 0; i < sm.size(); ++i)
            cout << sm[i] << " ";
        cout << endl;
        str = sm.suffix().str();
    }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 从匹配中返回值 Match 对象 成功的匹配总是返回一个 Match 对象, 这个对象通常也被放进 $/ 中, (...
    焉知非鱼阅读 1,879评论 0 1
  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 4,106评论 0 20
  • 正则表达式 正则表达式(Regular Expression)是计算机科学的一个概念。正则表达式使用单个字符串来描...
    yshenhn阅读 374评论 0 0
  • 大师和弟子走在路上,被一人恶语相向:“贼和尚,你不得好死……” 弟子听后非常生气,他想去和那人理论被师父拉住手臂。...
    54ad833dab69阅读 478评论 0 0