国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 桐梓县| 峡江县| 巩留县| 二手房| 乾安县| 大足县| 来宾市| 平昌县| 汕尾市| 鱼台县| 建湖县| 曲水县| 长汀县| 望江县| 木兰县| 寿光市| 河池市| 垦利县| 三穗县| 马尔康县| 榆树市| 西盟| 北宁市| 祁连县| 湖南省| 延吉市| 谢通门县| 宝丰县| 阿巴嘎旗| 榕江县| 门头沟区| 慈溪市| 隆德县| 河西区| 丰镇市| 洪洞县| 阿坝| 山东省| 全南县| 崇礼县| 高唐县|