網(wǎng)站首頁 編程語言 正文
在C++11中引入了正則表達式。
字符規(guī)則
先來了解一下這個字符的含義吧。
字符 | 描述 |
---|---|
\ | 轉(zhuǎn)義字符 |
$ | 匹配字符行尾 |
* | 匹配前面的子表達式任意多次 |
+ | 匹配前面的子表達式一次或多次 |
? | 匹配前面的子表達式零次或一次 |
{m} | 匹配確定的m次 |
{m,} | 匹配至少m次 |
{m,n} | 最少匹配m次,最大匹配n次 |
字符 | 描述 |
---|---|
. | 匹配任意字符 |
x|y | 匹配x或y |
[xyz] | 字符集合,匹配包含的任意一個字符 |
[^xyz] | 匹配未包含的任意字符 |
[a-z] | 字符范圍,匹配指定范圍內(nèi)的任意字符 |
[^a-z] | 匹配任何不在指定范圍內(nèi)的任意字符 |
頭文件:#include
regex_match
全文匹配,即要求整個字符串符合匹配規(guī)則,返回true或false
匹配“四個數(shù)字-一個或倆個數(shù)字”
#include <iostream>
#include <regex>
using namespace std;
int main()
{
string str;
cin >> str;
//\d 表示匹配數(shù)字 {4} 長度4個 \d{1,2}表示匹配數(shù)字長度為1-2
cout << regex_match(str, regex("\\d{4}-\\d{1,2}"));
return 0;
}
匹配郵箱 “大小寫字母或數(shù)字@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;//搜索結(jié)果
regex pattern("(\\d{4})-(\\d{1,2})-(\\d{1,2})");//搜索規(guī)則 ()表示把內(nèi)容拿出來
if (regex_search(str, match, pattern))
{ //提取 年 月 日
cout << "年:" << match[1] << endl;
cout << "月:" << match[2] << endl;
cout << "日:" << match[3] << endl;
//下標從1開始 下標0存的是符合這個搜索規(guī)則的起始位置和結(jié)束位置
}
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;
}
將字符串中的/刪掉
總結(jié)?
原文鏈接:https://blog.csdn.net/qq_45254369/article/details/125491031
相關(guān)推薦
- 2022-07-25 利用正則表達式匹配浮點型數(shù)據(jù)_正則表達式
- 2022-10-31 一文詳解如何使用Redis實現(xiàn)分布式鎖_Redis
- 2023-10-17 修改火狐瀏覽器滾動條樣式
- 2023-03-26 使用docker安裝hadoop的實現(xiàn)過程_docker
- 2022-08-30 使用Angular FormBuilder初始化新建FormGroup
- 2022-10-19 C++線程安全容器stack和queue的使用詳細介紹_C 語言
- 2022-06-23 Python+Turtle制作獨特的表白圖_python
- 2022-08-31 Android無障礙監(jiān)聽通知的實戰(zhàn)過程_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支