Code前端首页关于Code前端联系我们

正则表达式匹配规则整理,图解原理,附思维导图

terry 2年前 (2023-09-24) 阅读数 63 #后端开发

本文整理了正则表达式匹配规则,以及其使用的一些要点,并以图解的形式呈现了一些常见的正则表达式。希望这篇文章能够给大家带来一些帮助,让我在以后的工作中能够运用正则规则,爱上正则规则。

PS:不同语言的正则表达式规则并不完全相同,但大部分都可以使用。

什么是正则表达式

正则表达式是一种高效的数据提取和字符串匹配的机制。在链式匹配过程中,中将会从第一个位置开始匹配,然后从左到右进行匹配。比赛按顺序进行。每次尝试匹配时,控制权都会传递到下一个位置,直到匹配完成。

正则表达式是由常规字符(例如字符 a 到 z)和特殊字符(称为元字符)组成的文本模式。模式描述搜索文本正文时要找到的一个或多个字符串。正则表达式充当将字符模式与搜索字符串相匹配的模板。

正则表达式的诞生

正则表达式的“祖先”可以追溯到对人类神经系统运作的早期研究。两位神经生理学家沃伦·麦卡洛克和沃尔特·皮茨开发了一种数学方法来描述这些神经网络。

1956年,美国数学家Stephen Kleene在McCulloch和Pitts的早期工作基础上发表了一篇名为《神经网络事件的表示》的论文,其中引入了正则表达式的概念。

正则表达式用于描述他称之为“正则集代数”的表达式,因此称为“正则表达式”。

随后人们意识到这项工作可以应用于 Unix 的主要发明者 Ken Thompson 的一些关于计算搜索算法的早期研究。正则表达式的第一个实际应用是 Unix 中的 qed 编辑器。从那时起,正则表达式就成为文本编辑器和搜索工具的重要组成部分。全语法正则表达式用于比较字符格式时,后来被用于融合信息技术领域。从那时起,正则表达式经历了几个时期的演变,目前的标准已获得国际标准组织 (ISO) 的批准并得到 Open Group 的认可。

匹配规则

正则表达式中的一些基本匹配规则如下所示: 正则表达式匹配规则整理,图解原理并附思维导图

正则表达式

要点

贪婪❙贪婪html字符,我想获取标签中的内容:

南京长江大桥哈哈南京长江大桥

然后我写了这样一个正则规则:(.)*

在线测试结果是这样的:

正则表达式匹配规则整理,图解原理并附思维导图

这个结果不符合我们的预期。正常情况下我应该得到两个匹配结果,但现在我只得到一个匹配结果。

现在把正则表达式改成这样:(.)*?

在线测试的结果如下:

正则表达式匹配规则整理,图解原理并附思维导图

我的意思是,正则表达式会继续自动无限制地向右匹配,直到匹配到 At end 如果匹配数据与正则表达式的最后一个值匹配,则匹配。

Bu-贪婪的意思是,只要找到匹配的,就结束,不再继续向右匹配。

问号?它解决了贪婪问题,所以问号在比赛结束后结束,但它并没有解决贪婪问题,你把?放在哪里。在正则表达式中,有一些贪婪模式量词,例如:

{m,n}{m,}?*+

断言和零宽度

在 Java 中,我们知道断言可以用来声明一个事实,只有当陈述为真时,该事实才应为真。只有这样,下面的操作才会继续进行。

在正则表达式中,还有断言的概念,但是除了断言之外,正则表达式中还有零宽度的概念。

  • 断言:

    断言通俗地说就是“我断定某某情况为真”,正则规则中的断言是指正则规则可以推断出在 或 之前会有符合指定规则的内容。指定内容后。 。例如“aa1bb2cc3”,正则表达式可以使用断言来检测 bb2 在 aa1 之前或 bb2 在 cc3 之后。

    • 零宽度:

      零宽度意味着没有宽度。在正则表达式中,断言仅匹配位置,不接受字符。这意味着断言本身不会在匹配结果中返回。

      声明中有四种情况:

      正则表达式匹配规则整理,图解原理并附思维导图

      我们举个例子来说明一下。现在假设我们获取某个网页的html,该网页有一个阅读计数标签:

      阅读计数:1024

      现在我们想要获取这个阅读计数,我们该怎么办?

      如果使用forward语句进行匹配,可以这样写:

      d+(?=)

      上面的表达式是说明性的。现在我声称整数d+的后面部分可以匹配表达式:

      验证结果:

      正则表达式匹配规则整理,图解原理并附思维导图

      对应的前向和后向语句可以写成如下:

      (?[sS]*?

      正则表达式匹配规则整理,图解原理并附思维导图

      a 标签 ( [^]+)

      正则表达式匹配规则整理,图解原理并附思维导图

      imagetag

      ]*?src=['"]?([^"']+) [" ' ]?[^>]*>

      正则表达式匹配规则整理,图解原理并附思维导图

      常用思维导图

      正则表达式匹配规则整理,图解原理并附思维导图

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门