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

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

今天在linux的gcc上一搞,发现gcc根本就是坑啊,一编译运行直接抛出regex_error异常,这才知道。gcc到4.9才支持regex,以前就只是个壳子…

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

参照上面的链接,写了三个常用的方法。

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

int main() {
    //是否匹配整个序列
    cout << regex_match("123", regex("[0-9]+")) << endl;

    //regex搜索
    string str = "subject";
    regex re("(sub)(.*)");
    smatch sm;
    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;
}

欢迎留言