返回顶部
首页 > 资讯 > 精选 >C#正则表达式匹配引擎是什么
  • 364
分享到

C#正则表达式匹配引擎是什么

2023-06-17 23:06:06 364人浏览 泡泡鱼
摘要

这篇文章主要介绍“C#正则表达式匹配引擎是什么”,在日常操作中,相信很多人在C#正则表达式匹配引擎是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#正则表达式匹配引擎是什么”的疑惑有所帮助!接下来,请跟

这篇文章主要介绍“C#正则表达式匹配引擎是什么”,在日常操作中,相信很多人在C#正则表达式匹配引擎是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#正则表达式匹配引擎是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

现在,我们通过一个组结构来理解一个稍微复杂的例子。看下面的C#正则表达式匹配引擎的细节例子:

string text = "abracadabra1abracadabra2abracadabra3";        string pat = @"        ( # ***个组的开始         abra # 匹配字符串abra         ( # 第二个组的开始         cad # 匹配字符串cad         )? # 第二个组结束(可选)        ) # ***个组结束        + # 匹配一次或多次        ";        //利用x修饰符忽略注释        Regex r = new Regex(pat, "x");        //获得组号码的清单        int[] gnums = r.GetGroupNumbers();        //***匹配        Match m = r.Match(text);        while (m.Success)         {        //从组1开始         for (int i = 1; i < gnums.Length; i++)        {        Group g = m.Group(gnums[i]);        //获得这次匹配的组        Console.WriteLine("Group"+gnums[i]+"=["+g.ToString()+"]");        //计算这个组的起始位置和长度        CaptureCollection cc = g.Captures;        for (int j = 0; j < cc.Count; j++)         {         Capture c = cc[j];         Console.WriteLine(" Capture" + j + "=["+c.ToString()         + "] Index=" + c.Index + " Length=" + c.Length);         }        }        //下一个匹配         m = m.NextMatch();         }

这个C#正则表达式匹配引擎的细节实例的输出如下所示:

Group1=[abra]        Capture0=[abracad] Index=0 Length=7        Capture1=[abra] Index=7 Length=4        Group2=[cad]        Capture0=[cad] Index=4 Length=3        Group1=[abra]        Capture0=[abracad] Index=12 Length=7        Capture1=[abra] Index=19 Length=4        Group2=[cad]        Capture0=[cad] Index=16 Length=3        Group1=[abra]        Capture0=[abracad] Index=24 Length=7        Capture1=[abra] Index=31 Length=4        Group2=[cad]        Capture0=[cad] Index=28 Length=3

我们首先从考查字符串pat开始,pat中包含有表达式。***个capture是从***个圆括号开始的,然后表达式将匹配到一个abra。第二个capture组从第二个圆括号开始,但***个capture组还没有结束,这意味着***个组匹配的结果是abracad ,而第二个组的匹配结果仅仅是cad。因此如果通过使用?符号而使cad成为一项可选的匹配,匹配的结果就可能是abra或abracad。然后,***个组就会结束,通过指定+符号要求表达式进行多次匹配。

现在我们来看看匹配过程中发生的情况。首先,通过调用Regex的constructor方法建立表达式的一个实例,并在其中指定各种选项。在这个例子中,由于在表达式中有注释,因此选用了x选项,另外还使用了一些空格。打开x选项,表达式将会忽略注释和其中没有转义的空格。

然后,取得表达式中定义的组的编号的清单。你当然可以显性地使用这些编号,在这里使用的是编程的方法。如果使用了命名的组,作为一种建立快速索引的途径这种方法也十分有效。

接下来是完成***次匹配。通过一个循环测试当前的匹配是否成功,接下来是从group 1开始重复对组清单执行这一操作。在这个例子中没有使用group 0的原因是group 0是一个完全匹配的字符串,如果要通过收集全部匹配的字符串作为一个单一的字符串,就会用到group 0了。

我们跟踪每个group中的CaptureCollection。通常情况下每次匹配、每个group中只能有一个capture,但本例中的Group1则有两个capture:Capture0和Capture1。如果你仅需要Group1的ToString,就会只得到abra,当然它也会与abracad匹配。组中ToString的值就是其CaptureCollection中***一个Capture的值,这正是我们所需要的。如果你希望整个过程在匹配abra后结束,就应该从表达式中删除+符号,让regex引擎知道我们只需要对表达式进行匹配。

到此,关于“C#正则表达式匹配引擎是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: C#正则表达式匹配引擎是什么

本文链接: https://lsjlt.com/news/294437.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#正则表达式匹配引擎是什么
    这篇文章主要介绍“C#正则表达式匹配引擎是什么”,在日常操作中,相信很多人在C#正则表达式匹配引擎是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#正则表达式匹配引擎是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-17
  • C#正则表达式引擎贪婪特性是什么
    本篇内容主要讲解“C#正则表达式引擎贪婪特性是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#正则表达式引擎贪婪特性是什么”吧!C#正则表达式引擎贪婪特性,只要模式允许,它将匹配尽可能多的...
    99+
    2023-06-18
  • Python中怎么使用正则表达式及正则表达式匹配规则是什么
    1 导库import re2 使用模板re_pattern = re.compile(pattern, flags=0) result = re.findall(re_pattern,string)3 说明参数描述pattern匹配的正则表...
    99+
    2023-05-14
    Python
  • Java 正则表达式匹配
    1 正则表达式 1.1 什么是正则表达式 正则表达式: 定义一个搜索模式的字符串。 正则表达式可以用于搜索、编辑和操作文本。 正则对文本的分析或修改过程为:首先正则表达式应用的是文本字符串(text/string),它会以定义的模式从左到右...
    99+
    2023-10-27
    正则表达式 java 开发语言
  • Java匹配正则表达式的方法是什么
    这篇文章主要介绍了Java匹配正则表达式的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java匹配正则表达式的方法是什么文章都会有所收获,下面我们一起来看看吧。一.我们先举个例子来看看Java匹配正...
    99+
    2023-07-05
  • oracle正则表达式匹配的方法是什么
    Oracle中使用正则表达式匹配的方法是使用REGEXP_LIKE函数。 REGEXP_LIKE函数用于检查一个字符串是否符合指定的...
    99+
    2024-04-09
    oracle
  • C++实现LeetCode(10.正则表达式匹配)
    [LeetCode] 10. Regular Expression Matching 正则表达式匹配 Given an input string (s) and a pattern ...
    99+
    2024-04-02
  • 正则表达式怎么匹配数字
    这篇文章给大家分享的是有关正则表达式怎么匹配数字的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。高效正则表达式匹配数字实例:^[1-9]\d*$      //匹配正整数&n...
    99+
    2023-06-17
  • Java匹配正则表达式汇总
    目录一.我们先举个例子来看看Java匹配正则表达式二.匹配表达式的特殊情况java匹配字符串表达式在我们数据处理方面是及其重要的,现在就把我这几天数据处理比较常用的向大家介绍一下,常...
    99+
    2023-03-24
    Java匹配正则表达式 java正则匹配
  • Python中使用正则表达式及正则表达式匹配规则详解
    目录1 导库2 使用模板3 说明4 示例5 正则表达式匹配规则1 导库 import re 2 使用模板 re_pattern = re.compile(pattern, flags...
    99+
    2023-03-22
    Python正则表达式匹配规则 Python正则表达式
  • Notepad++怎么使用正则表达式匹配
    今天小编给大家分享一下Notepad++怎么使用正则表达式匹配的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Notepad+...
    99+
    2023-07-06
  • 正则表达式引擎的内部工作机制是什么
    这篇文章给大家分享的是有关正则表达式引擎的内部工作机制是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。了解正则表达式引擎的必要性:知道正则表达式引擎是如何工作的有助于你很快理解为何某个正则表达式不像你期望的那...
    99+
    2023-06-17
  • 匹配重复模式的正则表达式
    小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《匹配重复模式的正则表达式》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!问题内容我有以...
    99+
    2024-04-04
  • Python匹配中文的正则表达式
    正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里...
    99+
    2022-06-04
    中文 正则表达式 Python
  • Java正则表达式API边界匹配
    目录Boundary MatchersPattern Class MethodsPattern.CANON_EQPattern.CASE_INSENSITIVEPattern.COM...
    99+
    2024-04-02
  • 正则表达式如何匹配单词
    这篇文章给大家分享的是有关正则表达式如何匹配单词的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。正则表达式匹配单词的内幕:元字符<<\b>>也是一种对位置进行匹配的“锚”。这种匹配是0长度匹...
    99+
    2023-06-17
  • 在正则表达式中匹配空格
    在正则表达式中,可以使用`\s`来匹配空格字符,包括空格、制表符、换行符等。如果只想匹配空格,可以使用空格字符直接匹配。以下是两个示...
    99+
    2023-09-17
    正则表达式
  • 正则表达式空格如何匹配
    正则表达式中,空格可以使用`\s`匹配。`\s`匹配任意空白字符,包括空格、制表符、换行符等。 举个例子,如果想要匹配一个包含空格的...
    99+
    2023-10-08
    正则表达式
  • 正则表达式的匹配规则有哪些
    正则表达式的匹配规则有以下几种:1. 字符匹配:使用普通字符来匹配输入的相应字符。2. 通配符匹配:使用特殊字符来匹配任意一个字符。...
    99+
    2023-09-26
    正则表达式
  • perl中正则表达式匹配空格的方法是什么
    在Perl中,正则表达式匹配空格的方法有以下几种:1. 使用空格字符类:使用`\s`来匹配任意空白字符,包括空格、制表符和换行符。`...
    99+
    2023-09-26
    perl
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作