久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【正則表達式1】C++11正則表達式

 雪柳花明 2017-08-14

頭文件

#include <regex>

regex_match:整個字符串是否匹配

復(fù)制代碼
    regex reg1("\\w+day");
    string s1 = "saturday";
    string s2 = "saturday and sunday";
    smatch r1;
    smatch r2;
    cout << boolalpha << regex_match(s1, r1, reg1) << endl;  //true
    cout << boolalpha << regex_match(s2, r2, reg1) << endl;  //false
    cout << "s1匹配結(jié)果:" << r1.str() << endl;          //saturday
    cout << "s2匹配結(jié)果:" << r2.str() << endl;          //空
    cout << endl;
復(fù)制代碼

regex_match:只返回第一個匹配結(jié)果

復(fù)制代碼
    smatch rr1;
    smatch rr2;
    cout << boolalpha << regex_search(s1, rr1, reg1) << endl;  //true
    cout << "s1匹配結(jié)果:" << rr1.str() << endl;           //saturday
    cout << boolalpha << regex_search(s2, rr2, reg1) << endl;  //true
    cout << "s1匹配結(jié)果:" << rr2.str() << endl;           //saturday
    cout << endl;
復(fù)制代碼

iterator:返回多個匹配結(jié)果

類似于指針,調(diào)用成員要用"->"

復(fù)制代碼
    cout << "iterator結(jié)果:" << endl;
    sregex_iterator it(s2.begin(), s2.end(), reg1);
    sregex_iterator end;
    for(; it != end; ++it)
    {
        cout << it->str() << endl;
        //cout << *it << endl; 錯誤
    }

    cout << "token_iterator結(jié)果:" << endl;
    sregex_token_iterator tit(s2.begin(), s2.end(), reg1);
    sregex_token_iterator tend;
    for(; tit != tend; ++tit)
    {
        cout << tit->str() << endl;
        cout << *tit << endl;
    }
復(fù)制代碼

 

子表達式匹配

復(fù)制代碼
    regex reg2("(\\d{1,3}):(\\d{1,3}):(\\d{1,3}):(\\d{1,3})");
    string ip = "0:11:222:333";
    smatch m; 
    regex_match(ip, m, reg2);
    cout << "輸出:str()" << endl;
    cout << m.str() << endl;   //0:11:222:333
    cout << m.str(1) << endl;  //0
    cout << m.str(2) << endl;  //11
    cout << m.str(3) << endl;  //222
    cout << m.str(4) << endl;  //333

    cout << "輸出:[i]" << endl; //結(jié)果同上
    cout << m[0] << endl;
    cout << m[1] << endl;
    cout << m[2] << endl;
    cout << m[3] << endl;
    cout << m[4] << endl;
復(fù)制代碼

多個匹配結(jié)果

復(fù)制代碼
    string ip2 = "0:11:222:333 4:55:66:7";
    sregex_iterator ip_it(ip2.begin(), ip2.end(), reg2);
    sregex_iterator ip_end;
    for(; ip_it != ip_end; ++ip_it)
    {
        cout << ip_it->str() << endl;
        cout << ip_it->str(1) << endl;
        cout << ip_it->str(2) << endl;
        cout << ip_it->str(3) << endl;
        cout << ip_it->str(4) << endl;
    }
復(fù)制代碼

 

總的程序:

復(fù)制代碼
#include <iostream>
#include <string>
#include <regex>
using namespace std;

int main()
{
    //regex_match匹配整個字符串
    regex reg1("\\w+day");
    string s1 = "saturday";
    string s2 = "saturday and sunday";
    smatch r1;
    smatch r2;
    cout << boolalpha << regex_match(s1, r1, reg1) << endl;
    cout << boolalpha << regex_match(s2, r2, reg1) << endl;
    cout << "s1匹配結(jié)果:" << r1.str() << endl;
    cout << "s2匹配結(jié)果:" << r2.str() << endl;
    cout << endl;

    //regex_match只返回第一個匹配結(jié)果
    smatch rr1;
    smatch rr2;
    cout << boolalpha << regex_search(s1, rr1, reg1) << endl;
    cout << "s1匹配結(jié)果:" << rr1.str() << endl;
    cout << boolalpha << regex_search(s2, rr2, reg1) << endl;
    cout << "s1匹配結(jié)果:" << rr2.str() << endl;
    cout << endl;


    //使用iterator返回多個匹配結(jié)果
    //結(jié)果要用->
    cout << "iterator結(jié)果:" << endl;
    sregex_iterator it(s2.begin(), s2.end(), reg1);
    sregex_iterator end;
    for(; it != end; ++it)
    {
        cout << it->str() << endl;
        //cout << *it << endl; 錯誤
    }

    cout << "token_iterator結(jié)果:" << endl;
    sregex_token_iterator tit(s2.begin(), s2.end(), reg1);
    sregex_token_iterator tend;
    for(; tit != tend; ++tit)
    {
        cout << tit->str() << endl;
        cout << *tit << endl;
    }

    //子表達式匹配
    regex reg2("(\\d{1,3}):(\\d{1,3}):(\\d{1,3}):(\\d{1,3})");
    string ip = "0:11:222:333";
    smatch m; 
    regex_match(ip, m, reg2);
    cout << "輸出:str()" << endl;
    cout << m.str() << endl;
    cout << m.str(1) << endl;
    cout << m.str(2) << endl;
    cout << m.str(3) << endl;
    cout << m.str(4) << endl;

    cout << "輸出:[i]" << endl;
    cout << m[0] << endl;
    cout << m[1] << endl;
    cout << m[2] << endl;
    cout << m[3] << endl;
    cout << m[4] << endl;

    //輸出結(jié)果同上
    //regex_search(ip, m, str2);
    cout << endl;
    string ip2 = "0:11:222:333 4:55:66:7";
    sregex_iterator ip_it(ip2.begin(), ip2.end(), reg2);
    sregex_iterator ip_end;
    for(; ip_it != ip_end; ++ip_it)
    {
        cout << ip_it->str() << endl;
        cout << ip_it->str(1) << endl;
        cout << ip_it->str(2) << endl;
        cout << ip_it->str(3) << endl;
        cout << ip_it->str(4) << endl;
    }

    return 0;

}
復(fù)制代碼

 

參考:

http://www.cnblogs.com/zhuyp1015/archive/2012/04/08/2438191.html

http://www.cnblogs.com/zhuyp1015/archive/2012/04/08/2438215.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多