我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++11正则表达式详解(regex_match、regex_search和regex_replace)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++11正则表达式详解(regex_match、regex_search和regex_replace)

在C++11中引入了正则表达式。

字符规则

先来了解一下这个字符的含义吧。

字符描述
\转义字符
$匹配字符行尾
*匹配前面的子表达式任意多次
+匹配前面的子表达式一次或多次
匹配前面的子表达式零次或一次
{m}匹配确定的m次
{m,}匹配至少m次
{m,n}最少匹配m次,最大匹配n次
字符描述
.匹配任意字符
x|y匹配x或y
[xyz]字符集合,匹配包含的任意一个字符
[^xyz]匹配未包含的任意字符
[a-z]字符范围,匹配指定范围内的任意字符
[^a-z]匹配任何不在指定范围内的任意字符

头文件:#include

regex_match

全文匹配,即要求整个字符串符合匹配规则,返回true或false

匹配“四个数字-一个或俩个数字”

#include <iostream>
#include <regex>
using namespace std;
 
int main()
{
    string str;
    cin >> str;
    //\d 表示匹配数字  {4} 长度4个   \d{1,2}表示匹配数字长度为1-2
    cout << regex_match(str, regex("\\d{4}-\\d{1,2}"));
    return 0;
}

匹配邮箱 “大小写字母或数字@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

搜索匹配,即搜索字符串中存在符合规则的子字符串。

用法一:匹配单个

#include <iostream>
#include <regex>
#include <string>
using namespace std;
 
int main()
{
    string str = "hello2019-02-03word";
    smatch match;//搜索结果
    regex pattern("(\\d{4})-(\\d{1,2})-(\\d{1,2})");//搜索规则  ()表示把内容拿出来
    if (regex_search(str, match, pattern))
    {    //提取 年 月 日
        cout << "年:" << match[1] << endl;
        cout << "月:" << match[2] << endl;
        cout << "日:" << match[3] << endl;
        //下标从1开始 下标0存的是符合这个搜索规则的起始位置和结束位置
    }
    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))//循环匹配
    {
        citer = match[0].second;
        for (size_t i = 1; i < match.size(); ++i)
        {
            cout << match[i] << " ";
        }
        cout << endl;
    }
    return 0;
}

regex_replace

替换匹配,即可以将符合匹配规则的子字符串替换为其他字符串。

将字符串中的-替换为/

#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;
}

将字符串中的/删掉

总结 

到此这篇关于C++11正则表达式(regex_match、regex_search和regex_replace)的文章就介绍到这了,更多相关C++11正则表达式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++11正则表达式详解(regex_match、regex_search和regex_replace)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C++11正则表达式库怎么使用

本篇内容介绍了“C++11正则表达式库怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!基本用法代码说明最基本的用法当然就是定义正则表达
2023-06-19

Ruby正则表达式详解

正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找字符串集合,这篇文章纤细介绍了Ruby大的正则表达式,文章有详细的代码示例,需要的朋友可以参考一下
2023-05-15

Java 正则表达式详解

正则表达式(Regular Expression),又称为正规表达式、规则表达式、常规表示法等,是一种用来匹配、查找和替换字符串的工具。它的语法和规则相对复杂,但却非常强大和灵活。在Java中,可以使用java.util.regex包中的类
2023-08-16

Python中使用正则表达式及正则表达式匹配规则详解

这篇文章主要介绍了Python中使用正则表达式以及正则表达式匹配规则,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-03-22

Python中正则表达式详解

基础篇 正则表达式在python中运用的非常多,因为他可以进行任意的匹配,可以匹配我们想要提取的信息。当我们接触正则的时候你就会知道正则的强大。正则有一个库re 在一些工程中我们会经常调用正则的库来做与匹配相关的问题。 字符串是编程时涉及到
2022-06-04

C#正则表达式怎么理解

这篇文章主要讲解了“C#正则表达式怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#正则表达式怎么理解”吧!到目前为止,许多的编程语言和工具都包含对正则表达式的支持,当然.NET也不
2023-06-17

正则表达式Regular Expression (RegExp)详解

正则表达式(Regular Expression,RegExp)是一种用于匹配和操作文本的表达式。它是一种强大的工具,可以用来查找、替换、提取和验证各种文本模式。正则表达式由字符和特殊字符组成。字符可以是普通的字母、数字和标点符号,特殊字符
2023-08-16

正则表达式grep用法详解

grep是一个强大的文本搜索工具,它使用正则表达式来搜索和匹配文本。下面是grep的一些常用用法详解:1. 基本用法:grep pattern file这个命令会在文件中搜索匹配指定模式的行,并将其打印出来。pattern是一个正则表达式,
2023-08-11

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录