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

C++中的正则表达式如何使用

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

C++中的正则表达式如何使用

这篇文章主要介绍了C++中的正则表达式如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++中的正则表达式如何使用文章都会有所收获,下面我们一起来看看吧。

    介绍

    C++ 正则表达式教程解释了 C++ 中正则表达式的工作,包括正则表达式匹配、搜索、替换、输入验证和标记化的功能。

    几乎所有的编程语言都支持正则表达式。 C++ 从 C++11 开始直接支持正则表达式。除了编程语言之外,大多数文本处理程序(如词法分析器、高级文本编辑器等)都使用正则表达式。

    1. C++ 中的正则表达式 (Regex)

    正则表达式是包含一系列字符的表达式,这些字符定义了可用于字符串搜索算法、查找或查找/替换算法等的特定搜索模式。正则表达式也用于输入验证。

    大多数编程语言要么为正则表达式提供内置功能,要么通过库提供。从 C++11 开始,C++ 通过 标准库提供正则表达式支持。

    用于解析正则表达式的正则表达式处理器将其转换为内部表示,该表示被执行并与表示正在搜索的文本的字符串匹配。 C++11 使用 ECMAScript 语法作为正则表达式的默认语法。 ECMAScript 很简单,但它提供了强大的正则表达式功能。 让我们看看我们在正则表达式中指定的一些模式,如范围规范、重复模式等。

    1.1 范围规范

    指定字符或文字的范围是正则表达式中使用的最简单的标准之一。

    例如,我们可以指定一个从a到z的小写字母范围,如下所示:[a-z],这将只匹配一个小写字符。

    下列条件:[A-Za-z0-9]

    上面的表达式指定了包含一个大写字母、一个小写字母和0到9之间的数字的范围。

    上述表达式中的方括号([])具有特殊含义,即用于指定范围。如果你想包含一个括号作为表达式的一部分,那么你需要转义它。

    那么下面的表达式,[\[0-9]

    上面的表达式表示一个左括号和一个0到9范围内的数字作为正则表达式。

    但请注意,当我们使用 C++ 编程时,我们需要使用 C++ 特定的转义序列,如下所示:[\\[0-9]

    1.2 重复模式

    我们上面指定的范围示例只匹配一个字符或文字。如果我们想匹配多个字符,我们通常在模式中指定“表达式修饰符”,从而使其成为一个重复的模式。

    表达式修饰符可以是+,表示匹配一个模式出现一次或多次,也可以是*,表示匹配一个模式出现零次或多次。

    例如,下面的表达式,

    [a-z]+ 匹配 a、aaa、abcd、softwaretestinghelp 等字符串。请注意,它永远不会匹配空白字符串。

    [a-z]*将匹配一个空白字符串或任何上面的字符串。

    如果要指定一组字符匹配一次或多次,则可以使用括号,如下所示:(Xyz)+

    上面的表达式将匹配Xyz、XyzXyz和XyzXyz等等。

    2. C++正则表达式的例子

    考虑一个匹配 MS-DOS 文件名的正则表达式,如下所示。

    char regex_filename[] = “[a-zA-Z_] [a-zA-Z_0-9]*\\.[a-zA-Z0-9]+”;

    上面的正则表达式可以解释如下:

    匹配一个字母(小写,然后大写)或下划线。然后匹配零个或多个字符,其中每个字符可以是字母、下划线或数字。然后匹配文字点(.)。在点之后,匹配一个或多个字符,其中每个字符可以是表示文件扩展名的字母或数字。

    3. C++正则表达式中使用的函数模板

    现在让我们讨论在 C++ 中编写正则表达式时的一些重要函数模板。

    3.1 regex_match()

    此函数模板用于匹配给定的模式。如果给定的表达式与字符串匹配,则此函数返回 true。否则,该函数返回 false。

    以下是演示 regex_match 函数的 C++ 编程示例。

    #include <iostream>#include <string>#include <regex>using namespace std; int main () {    if (regex_match ("softwareTesting", regex("(soft)(.*)") ))      cout << "string:literal => matched\n";    const char mystr[] = "SoftwareTestingHelp";   string str ("software");   regex str_expr ("(soft)(.*)");    if (regex_match (str,str_expr))      cout << "string:object => matched\n";    if ( regex_match ( str.begin(), str.end(), str_expr ) )      cout << "string:range(begin-end)=> matched\n";    cmatch cm;  //匹配的词语检索出来   regex_match (mystr,cm,str_expr);       smatch sm;   regex_match (str,sm,str_expr);       regex_match ( str.cbegin(), str.cend(), sm, str_expr);   cout << "String:range, size:" << sm.size() << " matches\n";       regex_match ( mystr, cm, str_expr, regex_constants::match_default );    cout << "the matches are: ";   for (unsigned i=0; i<sm.size(); ++i) {      cout << "[" << sm[i] << "] ";   }    cout << endl;    return 0;}

    C++中的正则表达式如何使用

    在上面的程序中,首先,我们使用regex_match函数将字符串" softwareTesting "与正则表达式" (soft)(.*) "匹配。随后,我们还通过向regex_match传递字符串对象、范围等来演示regex_match的不同变体。

    3.2 regex_search()

    函数regex_search()用于在字符串中搜索匹配正则表达式的模式。

    考虑下面的c++程序,它显示了regex_search()的用法。

    #include <iostream> #include <regex> #include<string.h> using namespace std;    int main() {     //string to be searched    string mystr = "She sells_sea shells in the sea shore";        // regex expression for pattern to be searched     regex regexp("s[a-z_]+");        // flag type for determining the matching behavior (in this case on string objects)     smatch m;        // regex_search that searches pattern regexp in the string mystr      regex_search(mystr, m, regexp);       cout<<"String that matches the pattern:"<<endl;    for (auto x : m)         cout << x << " ";     return 0; }

    C++中的正则表达式如何使用

    我们先指定一个字符串,然后使用regex对象指定一个正则表达式。这个字符串和regex连同smatch标志类型一起被传递给regex_search函数。该函数在输入字符串中搜索第一个出现的模式,并返回匹配的字符串。

    3.3 regex_replace()

    函数regex_replace()用于用字符串替换与正则表达式匹配的模式。

    让我们使用一个c++程序来演示regex_replace()函数。

    #include <iostream> #include <string> #include <regex> #include <iterator> using namespace std;    int main() {      string mystr = "This is software testing Help portal \n";          cout<<"Input string: "<<mystr<<endl;           // regex to match string beginning with 'p'     regex regexp("p[a-zA-z]+");     cout<<"Replace the word 'portal' with word 'website' : ";     // regex_replace() for replacing the match with the word 'website'      cout << regex_replace(mystr, regexp, "website");          string result;            cout<<"Replace the word 'website' back to 'portal': ";    // regex_replace( ) for replacing the match back with 'portal'     regex_replace(back_inserter(result), mystr.begin(), mystr.end(),                   regexp,  "portal");        cout << result;        return 0; }

    C++中的正则表达式如何使用

    这里,我们有一个输入字符串。我们提供了一个正则表达式来匹配以 p 开头的字符串。然后我们将匹配的单词替换为website。接下来,我们将website替换回portal。

    4.C++输入验证

    我们已经讨论了使用regex进行模式匹配的主要函数模板。值得注意的是,regex服务的主要目的是输入验证。可以使用regex表达式验证从标准输入设备输入的输入。

    检查下面的程序,以演示如何使用regex验证传入的数据。

    #include <iostream>#include <regex>#include <string>using namespace std;  int main(){    string input;    regex integer_expr("(\\+|-)?[[:digit:]]+");    //As long as the input is correct ask for another number    while(true)    {        cout<<"Enter the input: ";        cin>>input;        if(!cin) break;        //Exit when the user inputs q        if(input=="q")            break;        if(regex_match(input,integer_expr))            cout<<"Input is an integer"<<endl;        else        {cout<<"Invalid input : Not an integer"<<endl;}    }}

    C++中的正则表达式如何使用

    这个程序匹配用户输入的输入,以验证它是否是整数。上面的输出显示,当输入一个整数时,它会给出一个适当的消息,而当输入任何其他数据时,它会将该消息作为无效输入。

    关于“C++中的正则表达式如何使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C++中的正则表达式如何使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

    免责声明:

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

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

    C++中的正则表达式如何使用

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

    下载Word文档

    猜你喜欢

    C++中的正则表达式如何使用

    这篇文章主要介绍了C++中的正则表达式如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++中的正则表达式如何使用文章都会有所收获,下面我们一起来看看吧。介绍C++ 正则表达式教程解释了 C++ 中正则表
    2023-06-30

    C#中如何使用正则表达式

    C#中如何使用正则表达式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。***个:验证输入的字符串是否为数字/// /// 验证输入字符串为数字 //
    2023-06-17

    如何使用C++中的正则表达式函数?

    如何使用C++中的正则表达式函数?正则表达式是一种强大的文本处理工具,可以用于匹配、搜索和替换文本中的模式。在C++中,我们可以使用正则表达式函数库来实现对文本的处理。本文将介绍如何在C++中使用正则表达式函数。首先,我们需要包含C++标准
    如何使用C++中的正则表达式函数?
    2023-11-18

    C#开发中如何正确地使用正则表达式

    C#开发中如何正确地使用正则表达式,需要具体代码示例正则表达式是一种强大的模式匹配工具,在C#开发中经常被用于字符串操作、数据校验、文本处理等方面。正确地使用正则表达式可以提高代码的效率和可维护性。本文将介绍在C#中正确使用正则表达式的相关
    2023-10-22

    VBS中如何使用正则表达式

    这篇文章主要介绍VBS中如何使用正则表达式,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用正则表达式在典型的搜索和替换操作中,必须提供要查找的确切文字。这种技术对于静态文本中的简单搜索和替换任务可能足够了,但是由于
    2023-06-09

    Linux中正则表达式如何使用

    这篇文章将为大家详细讲解有关Linux中正则表达式如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux之正则表达式 正则表达式与通配符的区别:最常应用正则表达式的命令是grep(egrep)
    2023-06-16

    PHP中正则表达式如何使用

    本篇文章为大家展示了PHP中正则表达式如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。PHP正则表达式的定义:用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及
    2023-06-17

    MySQL中如何使用正则表达式

    这篇文章将为大家详细讲解有关MySQL中如何使用正则表达式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、简介MySQL中支持正则表达式匹配,在复杂的过滤条件中,可以考虑使用正则表达式。使
    2023-06-25

    grep中如何使用正则表达式

    这篇文章给大家分享的是有关grep中如何使用正则表达式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。grep是Linux中用于处理文件的工具之一。grep搜索输入文件,查找与正则表达式匹配的行,并将每个匹配的行标
    2023-06-28

    VB中如何使用正则表达式

    在VB中使用正则表达式,可以通过引用System.Text.RegularExpressions命名空间来实现。以下是一个简单的示例,演示了如何在VB中使用正则表达式来检查一个字符串是否匹配特定的模式:Imports System.Tex
    VB中如何使用正则表达式
    2024-04-03

    Flex中如何使用正则表达式

    本篇文章给大家分享的是有关Flex中如何使用正则表达式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Flex正则表达式引言Flex正则表达式(regularexpression
    2023-06-17

    MySQL中正则表达式如何使用

    这篇“MySQL中正则表达式如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL中正则表达式如何使用”文章吧。前
    2023-07-02

    sql中如何使用正则表达式

    sql中使用正则表达式可通过regexp_like()函数,使用posix语法匹配字符串。常用字符包括锚点字符、字符类和量词。正则表达式可用于在select、where和其他语句中搜索和提取数据,但不同数据库系统对正则表达式支持略有不同。如
    sql中如何使用正则表达式
    2024-05-02

    JavaScript如何使用正则表达式

    正则表达式是一种用来匹配字符串的模式,可以用于验证、搜索、替换字符串等。JavaScript内置支持正则表达式,本篇文章将介绍JavaScript如何使用正则表达式。正则表达式比较复杂,如果您初次接触它,可能会感到困惑。但是只要您理解了基本语法和常见功能,就可以使用它来解决复杂的字符串匹配和替换问题。一、正则表达式的基本语法正则表达式由一系列字符和元字符组成,元字符用于指定匹配
    2023-05-14

    如何使用Python的正则表达式

    本篇内容主要讲解“如何使用Python的正则表达式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Python的正则表达式”吧!一、正则表达式介绍1.学习爬虫,为什么必须会正则表达式?
    2023-06-02

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

    今天小编给大家分享一下C++怎么使用正则表达式的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。目正则表达式正则表达式(regu
    2023-06-30

    jmeter正则表达式如何使用

    这篇文章主要讲解了“jmeter正则表达式如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jmeter正则表达式如何使用”吧!运用Jmeter正则提取器,可以从请求的响应结果中取到需要
    2023-06-21

    Linux如何使用正则表达式

    这篇文章将为大家详细讲解有关Linux如何使用正则表达式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我们可以使用 grep 命令来测试我们的正则表达式,grep命令使用正则表达式去尝试匹配指定文件的每一
    2023-06-27

    编程热搜

    • 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动态编译

    目录