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

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 次)。像一个重复魔法,可以让你无限次(包括零次)重复某个字符或模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凭君语未可

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值