资源描述:
《《正则表达式》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、3.3正则表达式广东商学院信息学院胡建军正则表达式描述程序设计语言中单词的一种简单而且数学化的工具。表示符号串的构成模式正则表达式r定义了一个符号串集合rs,rs内的每个符号串都与r所定义的模式相匹配,rs称为由r生成的语言L(r)正则表达式中出现的所有符号构成的集合为该正则表达式的字母表,用S表示正则表达式主要内容:基本概念正则表达式定义及一些性质扩充的正则表达式及程序设计语言中单词的定义正则表达式的局限性。正则定义正则表达式(正规式)基本概念:字母表:非空有限集,,其元素称为符号或字母.符号串:符号的有限序列,也称为‘字’。或表示
2、空串空串集{}不同于空集。符号串长度:符号串中字符的个数.
3、
4、符号串连接:和都是符号串,则为符号串的连接特别有:==符号串集的乘积:A和B是符号串的集合,则称AB={
5、A,B}特别有:A=A=A,其中表示空集。符号串的方幂:设A是符号串的集合,则称Ai为符号串集A的方幂,其中i是非负整数。A0={}A1=A,A2=AAAK=AA......A(k个)符号串集合的正闭包:A+=A1A2A3......符号串集合的星闭包:A*=A0A1A2A3......A*=A+A0=A+{}6/2
6、92021/7/20例:设字母表={a-zA-Z},串集A={a},串集B={bcd}则A2==aaA5=aaaaaB+==B1B2B3......==(bcd)1(bcd)2(bcd)3......==(bcd)(bcdbcd)bcdbcdbcd......AB=abcd正则表达式及其一些性质为给定的字母表,则每个上的正则表达式将定义上的一个字符串集。用R表示上的正则表达式,用L(R)表示R所表示的字符串集合(正则表达式的集合,语言,正规集)。即:函数L表示正则表达式字符串集的映射。正则表达式字符串集合R定
7、义构成语言L(R)书上:RE则R的定义及其含义如下:■是正则表达式,即R。其中L()={}。■是正则表达式,即R。其中L()={}。■c是正则表达式,即cR。其中L(c)={c}。■A和B是正则表达式,即AR,BR,则有(A)R,L((A))=L(A)A
8、BR,L(A
9、B)=L(A)L(B)ABR,L(AB)=L(A)L(B)A*R,L(A*)=L(A)*9/292021/7/20扩充的正则表达式一次或多次重复:A+任何符号:“…”在字母表中任何符号.
10、.
11、.
12、.符号范围:[0-9
13、][a-z][A-Z]不在给定范围内的符号:~(a
14、b
15、c)或[^a]可选:(+
16、-)?(可有可无,即有和无两种情况)例:A+R,L(A+)=L(A)+A?R,L(A?)=L(A){}枚举[abc]R,L([abc])_=(a
17、b
18、c)[0-9a-z]=[0-9]
19、[a-z]=(0
20、1
21、2…9)
22、[a-z]10/292021/7/20优先级约定括号的优先级最高闭包运算有最高的优先级,并且是左结合的运算;连接运算的优先级次之,且也是左结合的运算;或运算的优先级最低,且仍是左结合的运算。闭包运算(*)>连接运算(·)>选择运算(
23、
24、)例:((a)(b)*)
25、(c)ab*
26、c正则表达式例={a,b}.正则表达式eab*2.a(a
27、b)*L(e)上所有以a为首后跟任意多个(包括0个)b的字符串集上所有以a为首的字符串集正则表达式的性质A
28、B=B
29、A
30、的可交换性A
31、(B
32、C)=(A
33、B)
34、C
35、的可结合性A(BC)=(AB)C连接的可结合性A(B
36、C)=AB
37、AC连接的可分配性(A
38、B)C=AC
39、BC连接的可分配性A**=A*幂的等价性Al=lA=Al是连接的恒等元素(A
40、B)*A*
41、B*(A
42、B)*(A*
43、B*)*(A·B)*A*·B*13/292021/7/20
44、正则表达式的性质A
45、B=B
46、A
47、的可交换性A
48、(B
49、C)=(A
50、B)
51、C
52、的可结合性A(BC)=(AB)C连接的可结合性A(B
53、C)=AB
54、AC连接的可分配性(A
55、B)C=AC
56、BC连接的可分配性A**=A*幂的等价性Al=lA=Al是连接的恒等元素(A
57、B)*≠A*
58、B*(A
59、B)*=(A*
60、B*)*(A·B)*≠A*·B*程序设计语言中单词的正则表达式定义保留字如Begin=begin标识符letter=[a-z,A-Z]digit=[0-9]identifier=letter(letter
61、digit)*数字整数Int=[1-9]D
62、igit*
63、0实数real=Int.Int特殊符号+
64、-
65、…正则表达式的局限性正则表达式不能用于描述配对或嵌套的结构正则表达式不能用于描述重复串例:{wcw
66、w是a和b的串}无法