C++11正则表达式初探

C++正则表达式


在此之前都没有了解过C++的正则,不过现在大多数赛事都支持C++11了,因此有必要学习一下,用于快速A签到题。

  • 所在头文件
#include<regex>
  • 正则表达式语法
    跟其他语言的正则语法基本一样,要注意的是转义需要两个\\,如匹配数字的\d应该写成\\d
  • regex使用语法
regex pattern("正则表达式");//匹配规则
smatch result;//用于存放匹配结果
string s;//待匹配的文本串

库里有三个函数供我们使用,下面逐一简单介绍:

regex_match(s,result,pattern);

该函数是全文匹配,即从文本第一个字符开始匹配,不符就匹配失败,返回false,成功则返回true

regex_search(s,result,pattern);

该函数是搜索匹配,即匹配全文中符合规则的子字符串,匹配失败返回false,成功则返回true

regex_replace(s,pattern,"用于替换的内容");

该函数用指定字符串替换文本中所有符合规则的子串
如果想要遍历一个文本串中所有的匹配结果,可以像下面这样写

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个括号中的内容)

猜你喜欢

转载自www.cnblogs.com/orangee/p/9753794.html