第三章 2-正则表达式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
正则表达式的局限性
正则表达式不能用于描述配对或嵌套的结 构 正则表达式不能用于描述重复串 例:{w c w | w是a和b的串}无法用正则表 达式表示(保证两边w是相同的)。
习题作业
S={a,b,c} 试给出S-上一个不包含连续两个b的所有符号 串集合的正则定义. S={a,b,c} 叙述正则式((b|c)*a(b|c)*a)*(b|c)* 描述的符号串 S ={0,1} 叙述正则式 (00 | 11) ( (01 | 10) (00 | 11) (01 | 10 ) ) (00 | 11) 描述的符号串 给出能被5整除的二进制数表示形式的正则定 义。
正则表达式及其一些性质
为给定的字母表,则每个S上的正则表达 式将定义S上的一个字符串集。 用RS表示 上的正则表达式,用L(RS)表示RS所表示的字 符串集合 。即:函数L表示 正则表达式字符串集的映射。 则RS 的定义及其含义如下:
■ ■ ■
是 正则表达式,即RS 。其中L()={ }。 是 正则表达式,即 RS 。其中L()={ }。 c S是 正则表达式,即c RS 。其中 L(c)={ c }。 A和B是 正则表达式,即A RS,B RS ,则有
A** =A*
A=A=A
幂的等价性
是连接的恒等元素
扩充的正则表达式
一次或多次重复: A+ 任何符号: “…” 在字母表中任何符号. |... 符号范围: [0--9] [a--z] [A--Z] 不在给定范围内的符号: ~(a|b|c)或[La] [Labc] 0或1次(可选): r?=(|r)
正则表达式
描述程序设计语言中单词的一种简单而
且数学化工具。 表示符号串的构成模式 正则表达式r定义了一个符号串集合rs, rs内的每个符号串都与r所定义的模式 相匹配,rs称为由r生成的语言L(r) 正则表达式中出现的所有符号构成的集 合为该正则表达式的字母表,用S表示。
正则表达式
正则定义
为较长的正则表达式提供一个简化了的 名字。如要为一个或多个数字序列写一 个正则表达式,则可写作: (0|1|2|…|9)(0|1|2|…9)* 或写作 digit digit* 其中 digit= 0|1|2|…|9就是名字 digit的正则定义,表示为: digit 0|1|2|…|9
2. a(a|b)*
正则表达式的性质
A | B = B | A | 的可交换性
A | (B | C) =(A | B ) C
A (B C) =(A B )C
| 的可结合性
连接的可结合性
A (B | C) =A B | A C
(A | B ) C =A C | B C
连接的可分配性
连接的可分配性
程序设计语言中单词的 正则表达式定义
保留字 如 Begin=begin 标识符
Fra Baidu bibliotek
letter=[a-z,A-Z] digit=[0-9] identifier=letter(letter|digit)*
数字
整数Int=[1-9]Digit*|0 实数real=Int.Int
特殊符号 +|-|…
■
( A )RS,
A | BRS,
L( (A) )
= L(A)
L( A | B ) = L(A)L(B)
A B
A*
RS,
RS,
L( A B )
L( A*)
= L(A)L(B)
= L(A)*
正则表达式例
={ a,b }. L(e)
正则表达式e
1. ab*
1. 上所有以a为首后跟任意多 个(包括0个)b的字符串集 2. 上所有以a为首的字符串集
符号串的方幂: 设A是符号串的集合,则称Ai为符号 串集A的方幂,其中i是非负整数。 A0 ={} A1 = A , A2 = A A AK = AA......A(k个) 符号串集合的正闭包: A+ =A1 A2 A3 ...... 符号串集合的星闭包: A* =A0 A1 A2 A3 ......
主要内容: 基本概念 正则表达式定义及一些性质 正则定义 扩充的正则表达式及程序设计语言中 单词的定义 正则表达式的局限性。
正则表达式
基本概念: 字母表:非空有限集,,其元素称为符号或字母. 符号串:符号的有限序列,也称为‘字’。或表示 空串 空串集{}不同于空集 。 符号串长度:符号串中字符的个数.|| 符号串连接:和都是符号串,则为符号串的连接 特别有: = = 符号串集的乘积:A和B是符号串的集合,则称 AB={| A, B} 特别有:A=A=A,其中表示空集。