码迷,mamicode.com
首页 > 编程语言 > 详细

C++11正则表达式初探

时间:2018-10-08 14:03:32      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:转义   正则表达式   font   文件   mat   支持   search   class   括号   

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

C++11正则表达式初探

标签:转义   正则表达式   font   文件   mat   支持   search   class   括号   

原文地址:https://www.cnblogs.com/orangee/p/9753794.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!