news 2026/6/12 0:44:53

【程序语言与编译】正规式与正规集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【程序语言与编译】正规式与正规集

适合读者:软考中级备考同学
阅读时间:3分钟
内容:正规式的定义、基本运算、正规集、常用等价关系、例题


1. 为什么需要正规式?

正规式(Regular Expression)是一种用特定符号表示字符串集合(即正规集)的代数表示法。它能够简洁地描述词法规则(如标识符、整数、运算符等),是词法分析的基础。软考中常考查正规式与正规集的转换,以及正规式的化简。


2. 基本定义

正规式:递归定义如下:

  • ε\varepsilonε(空串)是正规式,表示集合{ε}\{\varepsilon\}{ε}
  • aaa是终结符,则aaa是正规式,表示集合{a}\{a\}{a}
  • rrrsss是正规式,则以下也是正规式:
    • r∣sr|srs(或),表示集合L(r)∪L(s)L(r) \cup L(s)L(r)L(s)
    • rsrsrs(连接),表示集合{xy∣x∈L(r),y∈L(s)}\{ xy \mid x \in L(r), y \in L(s) \}{xyxL(r),yL(s)}
    • r∗r^*r(闭包),表示集合L(r)∗=⋃i≥0L(r)iL(r)^* = \bigcup_{i \ge 0} L(r)^iL(r)=i0L(r)i(包含ε\varepsilonε
  • 有限次使用上述规则得到的表达式都是正规式。

正规集:正规式所表示的字符串集合。


3. 常用运算符号及优先级

运算符含义优先级(由高到低)
∗^*闭包(克林闭包)最高
⋅·(连接)先后连接中等
∣|(或)选择最低

通常括号( )用于改变运算顺序。


4. 正规式表示的语言示例

正规式正规集描述
a∣ba|bab{a,b}\{a, b\}{a,b}
ababab{ab}\{ab\}{ab}
a∗a^*a{ε,a,aa,aaa,… }\{\varepsilon, a, aa, aaa, \dots\}{ε,a,aa,aaa,}
a∣b∗a|b^*ab{a,ε,b,bb,bbb,… }\{a, \varepsilon, b, bb, bbb, \dots\}{a,ε,b,bb,bbb,}(注意优先级)
(a∣b)∗(a|b)^*(ab)所有由aaabbb组成的字符串(包括空串)
a(a∣b)∗a(a|b)^*a(ab)aaa开头的、由aaabbb组成的字符串
a∗ba^*bab任意个aaa后跟一个bbb
(a∣b)∗aa(a∣b)∗(a|b)^*aa(a|b)^*(ab)aa(ab)至少包含连续两个aaa的串

5. 常用正规式等价关系

等价关系说明
r∣s=s∣rr|s = s|rrs=sr交换律
(r∣s)∣t=r∣(s∣t)(r|s)|t = r|(s|t)(rs)t=r(st)结合律
(rs)t=r(st)(rs)t = r(st)(rs)t=r(st)连接结合律
r(s∣t)=rs∣rtr(s|t) = rs | rtr(st)=rsrt分配律
(s∣t)r=sr∣tr(s|t)r = sr | tr(st)r=srtr分配律
εr=rε=r\varepsilon r = r\varepsilon = rεr=rε=r空串为单位元
r∗=(r∗)∗=r∗r∗=ε∣r∗r^* = (r^*)^* = r^*r^* = \varepsilon | r^*r=(r)=rr=εr闭包性质
(r∣s)∗=(r∗s∗)∗(r|s)^* = (r^*s^*)^*(rs)=(rs)常见变形

6. 与有限自动机的关系

正规式、正规集、有限自动机(FA)三者等价:

  • 每个正规式对应一个正规集,且能被一个有限自动机识别。
  • 每个有限自动机所识别的语言都可以用一个正规式表示。

软考中常见题型:给定正规式,画出相应的状态转换图;或给定DFA,写出正规式。


7. 经典例题

题目1:设正规式r=(a∥b)∗abbr = (a\|b)^*abbr=(ab)abb,求它所表示的语言。

解析(a∥b)∗(a\|b)^*(ab)表示任意个aaabbb组成的串(包括空串),后面紧跟abbabbabb。因此该正规式表示所有以abbabbabb结尾的、由aaabbb组成的字符串。
答案{w∈{a,b}∗∣w 以 abb 结尾}\{ w \in \{a,b\}^* \mid w \text{ 以 } abb \text{ 结尾} \}{w{a,b}wabb结尾}


题目2:写出表示“以aaa开头,后跟任意个bbb”的字符串的正规式。

解析aaa开头:aaa;后面可以跟任意个bbbb∗b^*b。连接起来:ab∗a b^*ab
答案ab∗a b^*ab


题目3:与正规式(ab)∗(ab)^*(ab)等价的是( )。
A.a∗b∗a^*b^*ab
B.a∗b∗a∗a^*b^*a^*aba
C.(a∥b)∗(a\|b)^*(ab)
D.ε∥ab∥(ab)(ab)∥…\varepsilon\|ab\|(ab)(ab)\|\dotsεab(ab)(ab)

解析(ab)∗(ab)^*(ab)表示空串或ababab重复多次的串(ab,abab,ababab,…ab, abab, ababab, \dotsab,abab,ababab,)。选项Aa∗b∗a^*b^*ab可以生成aaabbb任意顺序但无ababab重复模式(如bababa也允许),不对。选项B同理。选项C包含所有a,ba,ba,b串,范围太大。选项D正是其定义。
答案:D


题目4:化简正规式(ε∥a)b∗(\varepsilon\|a)b^*(εa)b

解析ε∥a\varepsilon\|aεa表示空串或aaa,即{ε,a}\{ \varepsilon, a \}{ε,a}。与b∗b^*b连接:{ε,a}⋅b∗=b∗∪ab∗\{\varepsilon, a\} \cdot b^* = b^* \cup a b^*{ε,a}b=bab。而b∗b^*b已包含在ab∗a b^*ab中?注意εb∗=b∗\varepsilon b^* = b^*εb=bab∗a b^*ab是单独的,所以整体就是b∗∥ab∗b^* \| a b^*bab。由于b∗b^*bab∗a b^*ab的一部分?不,b∗b^*b生成所有仅含bbb的串,ab∗a b^*ab生成以aaa开头的串。二者无包含关系,所以化简后为b∗∥ab∗b^* \| a b^*bab。进一步可写作(a∥ε)b∗(a\| \varepsilon) b^*(aε)b,但通常保留原形即可。
答案(ε∥a)b∗(\varepsilon\|a)b^*(εa)bb∗∥ab∗b^*\|ab^*bab


8. 记忆口诀

正规式描述字符串,空串闭包连接或。
优先级:闭包高,连接次之或最低。
等价转换多练习,有限自动机可互换。


9. 给备考同学的一句话

正规式与正规集是词法分析的数学基础。软考中常考:

  • 给定自然语言描述,写出正规式。
  • 给定正规式,解释其表示的语言。
  • 正规式的等价化简或与有限自动机的转换。

记住基本运算的含义:r∣sr|srs(或)、rsrsrs(连接)、r∗r^*r(零次或多次重复)。多做题熟悉常见的等价关系,考试时就能快速写出正确答案。


🔔本专栏日更2篇,点击头像 → 专栏《软考中级高频考点》订阅

#软考中级 #软件设计师 #正规式 #正规集 #词法分析

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 0:44:03

深入解析OL2381射频收发器:寄存器配置、低功耗与实战避坑指南

1. OL2381射频收发器:寄存器配置的底层逻辑与实战指南在嵌入式无线系统的开发中,尤其是面对Sub-1 GHz频段的物联网设备,射频收发器的配置往往是决定项目成败的关键一环。很多工程师拿到芯片数据手册,看到动辄上百页的寄存器描述&a…

作者头像 李华
网站建设 2026/6/12 0:43:49

MHmarkets迈汇平台:从产品理解成本切入的细节对照

MHmarkets迈汇平台:从产品理解成本切入的细节对照对新手与注重稳健体验的外汇内容读者而言,“能看懂”往往比“堆概念”更重要。围绕MHmarkets迈汇平台,以下重点写清解释是否通俗、规则是否易查、提示是否前置,以及服务是否具备连…

作者头像 李华
网站建设 2026/6/12 0:40:57

Windows 11终极优化指南:用Win11Debloat让你的电脑焕然一新

Windows 11终极优化指南:用Win11Debloat让你的电脑焕然一新 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter a…

作者头像 李华
网站建设 2026/6/12 0:39:26

科技局如何解决政策资金“撒胡椒面”问题?

观点作者:科易网-国家科技成果转化(厦门)示范基地 核心要点 科技局需借助数智化工具构建区域创新资源全景式画像,精准识别企业创新活动,避免政策资金“撒胡椒面”。通过数智化工具靶向定位企业需求,形成结构…

作者头像 李华
网站建设 2026/6/12 0:36:02

从Inkscape矢量绘图到Gazebo仿真模型:SVG路径的3D重生指南

1. 为什么需要将SVG路径转换为3D仿真模型 在机器人开发过程中,经常会遇到需要验证非标零件设计的情况。比如设计一个异形齿轮,或者为机器人定制特殊形状的底盘。直接在3D建模软件中绘制这些复杂轮廓往往比较耗时,而使用Inkscape这样的矢量绘图…

作者头像 李华
网站建设 2026/6/12 0:35:55

I2C总线缓冲器PCA9512A:热插拔、电平转换与信号完整性设计全解析

1. 项目概述与核心价值在搞嵌入式硬件开发,尤其是涉及板卡插拔、多节点通信或者混合电压系统的朋友,对I2C总线又爱又恨是常态。爱它的简单——两根线(SDA数据线、SCL时钟线)就能搞定一堆器件的通信;恨它的脆弱——总线…

作者头像 李华