前言
前段时间开发的过程需要对字符串匹配过滤操作,这就涉及到了正则表达的功能。这篇文章是个人对c++正则表达式程序库regex使用的笔记,如有不正确的地方欢迎指正。
Regex库简介
Regex是从c++ 11开始有的。
c++正则表达式提供了以下几个主要功能:
- Math:将整个输入与正则表达式进行比对。
- Search:查找是否与正则表达式匹配的子串。
- Tokenize:根据正则表达式进行切分取得想要的目标子字符串。
- Replace:替换与正则表达式匹配的子字符串(一个或多个)。
Regex库使用
匹配判断
首先先看一个简单的例子
#include<regex>
#include<iostream>
int main(int argc, char *argv[])
{
try {
std::regex pattern("t_[^_]*_[^_]*_.*");
bool match = regex_match("t_123_345_456", pattern);
if (match) {
std::cout<< "match" <<std::endl;
} else {
std::cout << "not match" << std::endl;
}
}
catch (const std::regex_error &e) {
std::cout << "regex_error: what(): " << e.what() << std::endl;
}
return 0;
}
代码执行结果:
match
下面来说下基本使用方法。首先声明一个正则表达式:
std::regex pattern("t_[^_]*_[^_]*_.*");
然后调用匹配方法:
regex_match("t_123_345_456"