C 11正規表示式

2021-09-10 19:48:47 字數 2275 閱讀 4692

正規表示式是一種文字模式,包括普通字元(例如,a 到 z 之間的字母)和特殊字元(稱為"元字元")。正規表示式使用單個字串來描述、匹配一系列匹配某個句法規則的字串。

標頭檔案:

#include
1、regex_match:整個字串是否匹配

2、regex_search:只返回第乙個匹配結果

3、iterator:返回多個匹配結果,類似於指標,呼叫成員要用"->"

例項:

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匹配結果:" << r1.str() << endl;          //saturday

cout << "s2匹配結果:" << r2.str() << endl;          //空

cout << endl;

smatch rr1;

smatch rr2;

cout << boolalpha << regex_search(s1, rr1, reg1) << endl;  //true

cout << "s1匹配結果:" << rr1.str() << endl;           //saturday

cout << boolalpha << regex_search(s2, rr2, reg1) << endl;  //true

cout << "s1匹配結果:" << rr2.str() << endl;           //saturday

cout << endl;

//使用iterator返回多個匹配結果

//結果要用->

cout << "iterator結果:" << endl;

sregex_iterator it(s2.begin(), s2.end(), reg1);

sregex_iterator end;

for(; it != end; ++it)

cout << "token_iterator結果:" << endl;

sregex_token_iterator tit(s2.begin(), s2.end(), reg1);

sregex_token_iterator tend;

for(; tit != tend; ++tit)

除外,還有:子表示式匹配和多個匹配結果

//子表示式匹配

regex reg2("(\\d):(\\d):(\\d):(\\d)");

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;

//輸出結果同上

//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)

參考

C 11正規表示式

優勢 使得字串的處理更加簡單 一些相關的操作 驗證 檢查字串是否是想要的合法性 決策 判斷乙個輸入標書哪種字串 解析 從輸入的字串中查詢自己想要的資訊 轉換 搜尋字串,並將字串替換為新的格式化的字串 遍歷 搜尋字串所有出現的地方 符號化 根據一組分隔符將乙個字串分解為多個子字串 一些重要術語 模式 ...

c 11 正規表示式

include include 正規表示式標頭檔案 using namespace std regex search 檢索 regex replace 將檢索到的物件進行替換替換 match 是否匹配 void main cout 正規表示式實現字串的替換 void main 匹配時間 void m...

C 11 正規表示式

0.常用正規表示式 中文字元 u4e00 u9fa5 雙位元組字元 包括漢字在內 x00 xff 空白符 n s r 國內 號碼 d d d 18位身份證號 d d d d d 0 9 x 年 月 日 格式日期 0 9 1 9 0 9 1 9 0 9 0 9 1 9 0 9 1 9 0 9 0 13...