国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

c++11 之 正則表達(dá)式的學(xué)習(xí)(regex)

2019-11-08 19:52:23
字體:
供稿:網(wǎng)友

之前用正則表達(dá)式都是用的其他框架的類,比如QT的,并沒有用過標(biāo)準(zhǔn)庫里面的正則表達(dá)式,今日偶然得知c++11里面已經(jīng)添加了對(duì)正則表達(dá)式的支持,這絕對(duì)是一件大好事,如此強(qiáng)大的正則終于可以不依賴于其他的東西就可以用了,故來學(xué)習(xí)一下如何使用.

首先是要引入正則對(duì)應(yīng)的頭文件 #include <regex>

然后就可以聲明正則表達(dá)式對(duì)應(yīng)的類了

比如 std::regex re ("//d+?");

這里是說 匹配至少一個(gè)數(shù)字

用正則的話,我一般是使用三個(gè)用途

1.判斷某字符串是否符合要求,標(biāo)準(zhǔn)庫的用法如下:

std::regex re ("//d+?");std::string str = "12q3";bool ismatch = regex_match(str, re);

這里的ismatch  結(jié)果為false;但若是str = "123";,則返回結(jié)果為true

也就是 判斷是否符合要求,只需要使用 regex_match 這個(gè)函數(shù),傳字符串和對(duì)應(yīng)的正則規(guī)則,然后返回值的結(jié)果就是布爾類型,使用非常方便.

2.批量提取符合條件的字符串

比如我的字符串如下,std::string = "d45df544sf";我需要將其中的數(shù)字全部提取出來,則代碼如下:

std::regex re("//d+");std::string str = "d45df544sf";std::smatch sm;while (regex_search(str, sm, re)) {for (int i = 0; i < sm.size(); ++i)std::cout << sm[i] << " ";std::cout << std:: endl;str = sm.suffix().str();}

這里使用while循環(huán)來重復(fù)匹配 達(dá)到查找全部符合規(guī)則的字符串.

此外 還可以使用迭代器的寫法來進(jìn)行提取 代碼如下:

std::regex re("//d+");std::string str = "d45df544sf";for (std::sregex_iterator i = std::sregex_iterator(str.begin(), str.end(), re); i != std::sregex_iterator(); ++i){std::cout << i->str() << '/n';}

也能達(dá)到相同的結(jié)果 都是輸出 45    544

3.進(jìn)行字符串替換

替換使用的函數(shù)是regex_replace 用法如下

std::regex re ("//d+");std::string str = "12a3";std::string str2 = regex_replace(str,re,std::string("w"));

這里實(shí)現(xiàn)的效果就是將連續(xù)的數(shù)字全部替換成w  str2的結(jié)果為waw

替換的使用方式與判斷是否符合規(guī)則類似 只是在最后多傳一個(gè)要替換為的字符串 然后返回替換后的字符串.

總體來說,標(biāo)準(zhǔn)庫的正則表達(dá)式的使用我認(rèn)為是非常方便的,能滿足日常的基本需求.

關(guān)于正則表達(dá)式的入門資料,推薦http://deerchao.net/tutorials/regex/regex.htm


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 五大连池市| 清水县| 晋中市| 白水县| 五家渠市| 清水县| 平原县| 聂拉木县| 平舆县| 永兴县| 鹤壁市| 河源市| 东乡族自治县| 中山市| 金湖县| 江城| 四川省| 库伦旗| 扶风县| 岑巩县| 绥中县| 达孜县| 芮城县| 田东县| 裕民县| 西城区| 安图县| 马山县| 宜城市| 金阳县| 谢通门县| 榆中县| 中方县| 璧山县| 衡阳县| 繁昌县| 青海省| 望都县| 淮安市| 临沭县| 光山县|