日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

初学C++正则表达式(regex)

發(fā)布時間:2025/3/21 c/c++ 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初学C++正则表达式(regex) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

正則表達式,語法看起來很多啊! 本文做一個簡單的學習介紹:(環(huán)境: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,\\轉(zhuǎn)義,因為此處d有特殊含義 d{8}表示8個數(shù)字。結(jié)果:數(shù)字個數(shù)為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>?
總結(jié):正則表達式用法很強大,可以完成查找、匹配、分隔操作。

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

總結(jié)

以上是生活随笔為你收集整理的初学C++正则表达式(regex)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。