C++11正则表达式初探
C++正则表达式
在此之前都没有了解过C++的正则,不过现在大多数赛事都支持C++11了,因此有必要学习一下,用于快速A签到题。
* 所在头文件
```C++
#include
```
* 正则表达式语法
跟其他语言的正则语法基本一样,要注意的是转义需要两个```\```,如匹配数字的```d```应该写成```\d```;
* regex使用语法
```C++
regex pattern("正则表达式");//匹配规则
smatch result;//用于存放匹配结果
string s;//待匹配的文本串
```
库里有三个函数供我们使用,下面逐一简单介绍:
```C++
regex_match(s,result,pattern);
```
该函数是全文匹配,即从文本第一个字符开始匹配,不符就匹配失败,返回false,成功则返回true
```C++
regex_search(s,result,pattern);
```
该函数是搜索匹配,即匹配全文中符合规则的子字符串,匹配失败返回false,成功则返回true
```C++
regex_replace(s,pattern,"用于替换的内容");
```
该函数用指定字符串替换文本中所有符合规则的子串
如果想要遍历一个文本串中所有的匹配结果,可以像下面这样写
```C++
while (regex_search(s,result,pattern))
{
for (int i = 1; i < result.size(); ++i)
{
cout << result[i] << endl;
}
s=result.suffix().str();
}
```
result[0]表示匹配的全部内容,result[i]表示匹配内容中的第i个组(即第i个括号中的内容)