最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++11正則表達式詳解(regex_match、regex_search和regex_replace)

 更新時間:2022年09月29日 08:59:12   作者:林夕07  
正則表達式(regular expression)是計算機科學中的一個概念,又稱規(guī)則表達式,下面這篇文章主要介紹了C++11正則表達式(regex_match、regex_search和regex_replace)的相關資料,需要的朋友可以參考下

在C++11中引入了正則表達式。

字符規(guī)則

先來了解一下這個字符的含義吧。

字符描述
\轉義字符
$匹配字符行尾
*匹配前面的子表達式任意多次
+匹配前面的子表達式一次或多次
?匹配前面的子表達式零次或一次
{m}匹配確定的m次
{m,}匹配至少m次
{m,n}最少匹配m次,最大匹配n次
字符描述
.匹配任意字符
x|y匹配x或y
[xyz]字符集合,匹配包含的任意一個字符
[^xyz]匹配未包含的任意字符
[a-z]字符范圍,匹配指定范圍內的任意字符
[^a-z]匹配任何不在指定范圍內的任意字符

頭文件:#include

regex_match

全文匹配,即要求整個字符串符合匹配規(guī)則,返回true或false

匹配“四個數字-一個或倆個數字”

#include <iostream>
#include <regex>
using namespace std;
 
int main()
{
    string str;
    cin >> str;
    //\d 表示匹配數字  {4} 長度4個   \d{1,2}表示匹配數字長度為1-2
    cout << regex_match(str, regex("\\d{4}-\\d{1,2}"));
    return 0;
}

匹配郵箱 “大小寫字母或數字@126/163.com”

int main()
{
    string str;
    cout << "請輸入郵箱:" << endl;
    while (cin >> str)//匹配郵箱
    {
        if (true == regex_match(str, regex("[a-zA-Z0-9]+@1(26|63)\\.com")))
        {
            break;
        }
        cout << "輸入錯誤,請重新輸入:" << endl;
    }
    cout << "輸入成功!" << endl;
 
    return 0;
}

regex_search

搜索匹配,即搜索字符串中存在符合規(guī)則的子字符串。

用法一:匹配單個

#include <iostream>
#include <regex>
#include <string>
using namespace std;
 
int main()
{
    string str = "hello2019-02-03word";
    smatch match;//搜索結果
    regex pattern("(\\d{4})-(\\d{1,2})-(\\d{1,2})");//搜索規(guī)則  ()表示把內容拿出來
    if (regex_search(str, match, pattern))
    {    //提取 年 月 日
        cout << "年:" << match[1] << endl;
        cout << "月:" << match[2] << endl;
        cout << "日:" << match[3] << endl;
        //下標從1開始 下標0存的是符合這個搜索規(guī)則的起始位置和結束位置
    }
    return 0;
}

用法二:匹配多個

#include <iostream>
#include <regex>
#include <string>
using namespace std;
 
int main()
{
    //匹配多個符合要求的字符串
    string str = "2019-08-07,2019-08-08,2019-08-09";
    smatch match;
    regex pattern("(\\d{4})-(\\d{1,2})-(\\d{1,2})");
    string::const_iterator citer = str.cbegin();
    while (regex_search(citer, str.cend(), match, pattern))//循環(huán)匹配
    {
        citer = match[0].second;
        for (size_t i = 1; i < match.size(); ++i)
        {
            cout << match[i] << " ";
        }
        cout << endl;
    }
    return 0;
}

regex_replace

替換匹配,即可以將符合匹配規(guī)則的子字符串替換為其他字符串。

將字符串中的-替換為/

#include <iostream>
#include <regex>
using namespace std;
int main()
{
    //替換不會修改原串
    cout << regex_replace("2019-08-07", regex("-"), "/") << endl;
    return 0;
}

匹配以逗號分隔的字符串(\S表示匹配任意顯示字符)

使用正則表達式將所有信息批處理為sql的語句

使用正則表達式1999-10-7 修改為 10/7/1999

先匹配上,再拿小括號獲取值 然后替換

然后就可以放在程序中

int main()
{
    string str;
    cin >> str;
    cout << regex_replace(str, regex("(\\d{4})-(\\d{1,2})-(\\d{1,2})"), "$2/$3/$1");
 
    return 0;
}

將字符串中的/刪掉

總結 

到此這篇關于C++11正則表達式(regex_match、regex_search和regex_replace)的文章就介紹到這了,更多相關C++11正則表達式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

昭平县| 商南县| 凤山县| 潢川县| 阿城市| 西乌| 鹤壁市| 壶关县| 巴马| 金乡县| 阆中市| 昌吉市| 东至县| 红河县| 天水市| 武城县| 栖霞市| 双城市| 邳州市| 万年县| 兴安盟| 卢龙县| 辛集市| 乌兰浩特市| 兰考县| 临桂县| 台南市| 长垣县| 精河县| 永川市| 望奎县| 黄冈市| 定州市| 贡嘎县| 剑川县| 永兴县| 梧州市| 塘沽区| 集贤县| 周口市| 宝山区|