详解运算符(或运算、连接运算、闭包运算)

运算符

  • 1. `|` 运算符 —— “选择”操作(或运算)
    • 例子:
    • 类比:
    • 正规式和正规集:
  • 2. `·` 运算符 —— “连接”操作(连接运算)
    • 例子:
    • 类比:
    • 正规式和正规集:
  • 3. `*` 运算符 —— “重复”操作(闭包运算)
    • 例子:
    • 类比:
    • 正规式和正规集:
  • 结合这些运算符的正规表达式例子
    • 正规式:
    • 解释:
    • 对应的正规集:
  • 总结

1. | 运算符 —— “选择”操作(或运算)

| 表示选择运算,常用于正规表达式中的“或”操作。它允许匹配多个可能的模式之一。用正规集来表示时,| 运算符表示两个集合的并集。| 运算符可以类比为一个分岔路口,走左边可以去一条路,走右边可以去另一条路。这就像给你多个选项,让你从中选择一个路径。

例子:

  • 正规表达式 a|b 表示可以匹配字符串 ab
  • 如果用集合来描述,假设集合 A = {a} 和集合 B = {b},则 A | B 表示 {a, b}

正规表达式 a|b 表示 “a 或 b”。这就像你站在一个分岔口前,有两条路可以走,一条是通向字母 a 的路,另一条通向字母 b 的路。无论你选择走哪条路,你都会匹配其中一个。

类比:

假设你在输入一个电话号码时,你可以输入 123 或者 456。在这个场景下,正则表达式 123|456 就表示“匹配 123 或 456”。无论输入哪个数字组合,系统都会认为是有效的。

或者想象你在点餐,菜单上有两个主菜可供选择——比萨或者汉堡。你可以选其中之一,但不需要同时选两个。这个“或者”的选择就是 | 运算符的本质。

正规式和正规集:

  • 正规式:a | b
  • 对应的正规集:{a, b}

解释:这个正规式的意思是:接受的字符串可以是 ab,是一个选择操作。

2. · 运算符 —— “连接”操作(连接运算)

· 表示连接运算,也称为串联或连接操作。在正规表达式中,· 用于将两个字符串连接成一个新的字符串。通常在正规表达式中隐含存在,不用明确表示。· 运算符是把两个字符或字符串像串珠子一样串在一起。你可以想象它就像是在搭积木,你先放一个积木,再放另一个积木,最终构建出一个完整的东西。

例子:

  • 正规表达式 ab 表示字符串 ab 的连接,匹配的是字符串 ab
  • 如果用正规集来表示,A = {a} 和 B = {b},则 A · B 表示 {ab}

正规表达式 ab(通常省略 ·)表示 “a 和 b 的连接”。这意味着 a 一定要和 b 紧密相连,它们像朋友一样手牵手,不能分开。只有当 ab 这样紧跟着出现时,才算匹配。

类比:

比如你在创建密码的时候,可能有一些规则:密码必须包含字母和数字。在这种情况下,正则表达式 字母·数字 就是要求字母紧跟数字出现,比如 A1b2

也可以想象你在写作业,老师要求你必须在一段话中用到两个特定的单词,并且这两个单词必须连在一起。例如,你必须写“苹果”和“香蕉”,并且它们不能分开。· 就是确保它们依次出现的连接运算。

正规式和正规集:

  • 正规式:a · b
  • 对应的正规集:{ab}

解释:这个正规式的意思是:字符串 a 紧跟着字符串 b 形成的连接,如 ab

3. * 运算符 —— “重复”操作(闭包运算)

* 表示闭包运算,称为 Kleene 星运算。它用于表示一个模式可以重复任意次(包括 0 次)。在正规语言中,这意味着允许该模式重复出现任意多次,甚至不出现。* 运算符就像一个无限循环的魔法符号,允许你重复某个字符或字符串任意次数——你可以重复很多次,也可以一次都不重复。这种重复操作就像在游戏中打怪升级,你可以不停地打怪(重复很多次),也可以一次都不打(零次)。

例子:

  • 正规表达式 a* 表示匹配任意多个 a(包括不出现的情况),可以匹配空字符串、aaaaaa,依此类推。
  • 如果用正规集来描述,A = {a},则 A* 表示 {ε, a, aa, aaa, ...},其中 ε 表示空字符串。

正规表达式 a* 表示 “任意多个 a”。这意味着可以是零个 a、一个 a、两个 a,甚至十个 a。只要出现的字符全是 a,数量不限。

类比:

比如你在登录网站时,用户名字段允许你输入任意多个小写字母。这时,正则表达式 [a-z]* 就表示“任意数量的小写字母”,可以是空字符串(零个字母),也可以是 abcxyz 这样的字符串。

亦或者想象你正在画圆圈,每画一个就意味着多重复了一次。但是你有一个特殊能力:你可以决定画多少个圆圈。你可以画一个、画两个,甚至你可以不画(零次)。这就是 * 的力量——让你拥有无限可能的重复次数。

正规式和正规集:

  • 正规式:a*
  • 对应的正规集:{ε, a, aa, aaa, ...}

解释:这个正规式的意思是:可以有 0 或更多个 a,因此匹配的字符串集合包括空字符串、一个或多个 a 的连续重复。

结合这些运算符的正规表达式例子

正规式:

(a|b)* · c

解释:

  • (a|b) 表示 ab,即可以是 ab 之一。
  • (a|b)* 表示 ab 的任意次组合,可能是空字符串、abaaabbabb,依此类推。
  • (a|b)* · c 表示所有由 ab 组成的任意串,后面跟着一个 c。例如,acbcaabcbbbc 都是符合的字符串。

对应的正规集:

{c, ac, bc, aac, abc, bbc, ...}

总结

  • | 运算符:表示“或”操作,构造多个可能的选择。像是在分岔路口做选择,你可以选其中之一。
  • · 运算符:表示串联操作,将两个模式依次连接。像搭积木,两个字符一个接一个地组合在一起。
  • * 运算符:表示重复操作,可以匹配模式的任意次数(包括 0 次)。像一个重复魔法,可以让你无限次(包括零次)重复某个字符或模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1549830.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

24-9-28-读书笔记(二十)-《契诃夫文集》(四)上([俄] 契诃夫 [译] 汝龙 )

文章目录 《契诃夫文集》(四)上([俄] 契诃夫 [译] 汝龙 )目录阅读笔记记录总结 《契诃夫文集》(四)上([俄] 契诃夫 [译] 汝龙 ) 时间过得好快啊,马上又要十月份了&#x…

解读文本嵌入:语义表达的练习

【引子】近来在探索并优化AIPC的软件架构,AI产品经理关于语义搜索的讨论给了自己较多的触动,于是重新梳理嵌入与语义的关系,遂成此文。 文本转换成机器可理解格式的最早版本之一是 ASCII码,这种方法有助于渲染和传输文本&#xff…

数据结构_2.2、顺序表插入删除查找

1、线性表的顺序存储表示定义: 线性表:是具有相同数据类型的n (n≥0)个数据元素的有限序列 顺序表:用顺序存储的方式实现线性表 顺序存储:把逻辑上相邻的元素存储在物理 位置上也相邻的存储单元中&#…

深度学习框架的选择:深入比较PyTorch与TensorFlow

深度学习框架的选择:深入比较PyTorch与TensorFlow 前言深度学习框架的起源与发展**PyTorch****TensorFlow** 框架的进化**TensorFlow****PyTorch** 数据对比结论结语 前言 在人工智能的浪潮中,深度学习技术已成为推动行业变革的核心力量。随着技术的不断…

C语言 | Leetcode C语言题解之第443题压缩字符串

题目&#xff1a; 题解&#xff1a; void swap(char *a, char *b) {char t *a;*a *b, *b t; }void reverse(char *a, char *b) {while (a < b) {swap(a, --b);} }int compress(char *chars, int charsSize) {int write 0, left 0;for (int read 0; read < charsSi…

leetcode_55:跳跃游戏

给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输…

Java基于easyExcel的自定义表格格式

这里用的到easyExcel版本为3.3.4 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.4</version></dependency> 效果 代码部分 package com.tianyu.test;import com.alibaba.exc…

单调递增/递减栈

单调栈 单调栈分为单调递增栈和单调递减栈 单调递增栈&#xff1a;栈中元素从栈底到栈顶是递增的 单调递减栈&#xff1a;栈中元素从栈底到栈顶是递减的 应用&#xff1a;求解下一个大于x元素或者是小于x的元素的位置 给一个数组&#xff0c;返回一个大小相同的数组&#x…

C语言课程设计题目七:学生成绩管理系统设计

题目七&#xff1a;学生成绩管理系统设计 学生成绩信息包括&#xff1a;学期&#xff0c;学号&#xff0c;班别&#xff0c;姓名&#xff0c;四门课程成绩(语文、数学、英语和计算机)等。 主要功能&#xff1a; 能按学期、按班级完成对学生成绩的录入、修改。能按班级统计学生…

Element-Plus中上传文件upload取消提示按钮与文字

去除提示按钮与文字 添加样式&#xff0c;让这个div进行隐藏 .el-upload__input {display: none !important; }

WEB 编程:富文本编辑器 Quill 配合 Pico.css 样式被影响的问题之还是 iframe

这个系列已经写了 3 篇了。这篇写如何使用 iframe 解决标题里面提到的问题。 前情提要 请看上一篇博文&#xff1a; WEB 编程&#xff1a;富文本编辑器 Quill 配合 Pico.css 样式被影响的问题之Shadow DOM WEB 编程&#xff1a;富文本编辑器 Quill 配合 Pico.css 样式被影响…

深度学习反向传播-过程举例

深度学习中&#xff0c;一般的参数更新方式都是梯度下降法&#xff0c;在使用梯度下降法时&#xff0c;涉及到梯度反向传播的过程&#xff0c;那么在反向传播过程中梯度到底是怎么传递的&#xff1f;结合自己最近的一点理解&#xff0c;下面举个例子简单说明&#xff01; 一、…

锐捷 NBR 1300G路由器 越权CLI命令执行漏洞

漏洞描述 锐捷NBR 1300G路由器 越权CLI命令执行漏洞&#xff0c;guest账户可以越权获取管理员账号密码 漏洞复现 FOFA title"锐捷网络 --NBR路由器--登录界面" 请求包 POST /WEB_VMS/LEVEL15/ HTTP/1.1 Host: Connection: keep-alive Content-Length: 73 Autho…

网络编程(12)——完善粘包处理操作(id字段)

十二、day12 之前的粘包处理是基于消息头包含的消息体长度进行对应的切包操作&#xff0c;但并不完整。一般来说&#xff0c;消息头仅包含数据域的长度&#xff0c;但是如果要进行逻辑处理&#xff0c;就需要传递一个id字段表示要处理的消息id&#xff0c;当然可以不在包头传i…

naocs注册中心,配置管理,openfeign在idea中实现模块间的调用,getway的使用

一 naocs注册中心步骤 1 nacos下载安装 解压安装包&#xff0c;直接运行bin目录下的startup.cmd 这里双击运行出现问题的情况下 &#xff08;版本低的naocs&#xff09; 在bin目录下 打开cmd 运行以下命令 startup.cmd -m standalone 访问地址&#xff1a; http://localh…

一文了解:最新版本 Llama 3.2

Meta AI最近发布了 Llama 3.2。这是他们第一次推出可以同时处理文字和图片的多模态模型。这个版本主要关注两个方面&#xff1a; 视觉功能&#xff1a;他们现在有了能处理图片的模型&#xff0c;参数量从11亿到90亿不等。 轻量级模型&#xff1a;这些模型参数量在1亿到3亿之间…

基于SSM+小程序的高质量阅读微信管理系统(阅读5)(源码+sql脚本+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 1、其管理员管理文章&#xff0c;留言板&#xff0c;交流论坛以及用户信息。 2、用户收藏并评论文章&#xff0c;查看和评论论坛交流信息&#xff0c;管理自己发布的帖子&#xff0c;管理…

数据结构与算法笔记7:最小生成树-Prim和Kruskal算法

常用的最小生成树的算法主要有两种&#xff0c;一种是Prim算法&#xff0c;一种是Kruskal算法。题目链接&#xff1a;KamaCoder 53. 寻宝&#xff08;第七期模拟笔试&#xff09; 这里假设有V个节点&#xff0c;因为我们的节点的标号是1~V&#xff0c;这样我们直接使用标号作…

队列及笔试题

队列 先进先出 使用单链表进行队尾插入 队头删除 其中带头结点直接尾插&#xff0c;不带头结点第一次操作要判断一下 但是带头结点需要malloc和free 函数传需要修改的参数方法 1、二级指针 2、带哨兵位的头结点 3、返回值 4、如果有多个值&#xff0c;用结构体封装起来…

努比亚 Z17 NX563J Root 教程三方REC刷写工具教程

教程&#xff1a;1&#xff0c;自用成功 正常链接列表 adb devices 检查fastboot链接列表 fastboot devices 解锁设备fastboot oem nubia_unlock NUBIA_NX563J 我用的解锁设备是&#xff1a;fastboot flashing unlock 1.打开开发者选项。将OEM解锁的按钮打开 2.下载附件努…