程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 初學C++正則表達式(regex)

初學C++正則表達式(regex)

編輯:C++入門知識

由效果產生學習的興趣,即使失敗,但至少不會中途作廢。

正則表達式,語法看起來很多啊! 本文做一個簡單的學習介紹:(環境:Windows 7 + Visual Studio 2010)

#include <regex>  //header

1,匹配電話號碼

string tel_pattern("13([5-8])(\\d{8})");

//解釋:()表示一個子表達式,a,13是開頭;b,[5-8]表示這個字符介於'5'和'8'之間;c,\\轉義,因為此處d有特殊含義 d{8}表示8個數字。結果:數字個數為11個,以135-138為開頭。

string tel = "13512345678"; www.2cto.com

bool match = regex_match(tel,tel_pattern);

2,匹配郵件地址

string email_pattern("(\\w+)(\\.|_)?(\\w+)@(\\w+)(\\.(\\w+))+");

//解釋:w+表示一個或多個單詞,.|_表示.或者_,?表示有0個或者1個,+表示重復。

@前面的含義是,單詞串,串之間可以有1個.或者_,也可以沒有

@後面的含義是,單詞串開始,後面有一個 .words或者多個

3,分隔字符串

[cpp] 
<span style="font-size:14px;">  regex str_pattern("(\\.)"); 
    string str = "www.baidu.com"; 
    sregex_token_iterator iter(str.begin(),str.end(),str_pattern,-1); 
    sregex_token_iterator end; 
    vector<string> vec; 
    while(iter != end) 
    { 
        vec.push_back(*iter++); 
        printf_s("%s \n",vec.back().c_str()); 
    } 
    printf_s("%d \n",vec.size());</span> 
總結:正則表達式用法很強大,可以完成查找、匹配、分隔操作。

重要一點:正則表達式 與 編譯原理中的語法樹、詞法分析聯系太緊了,相互之間補充理解。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved