常规套装
任何表示正则表达式值的集合称为正则集。
正则集的性质
财产1.两个正则集的并集是正则的。
证明-
让我们看两个正则表达式
RE 1 = a(aa)* 且 RE 2 = (aa)*
因此,L 1 = {a, aaa, aaaaa,.....}(奇数长度的字符串,不包括 Null)
且 L 2 ={ ε, aa, aaaa, aaaaaa,.......} (偶数长度的字符串,包括 Null)
L 1 ∪ L 2 = { ε, a, aa, aaa, aaaa, aaaaa, aaaaaa,......}
(所有可能长度的字符串,包括 Null)
RE (L 1 ∪ L 2 ) = a* (它本身就是正则表达式)
于是,证明了。
性质2. 两个正则集的交集是正则的。
证明-
让我们看两个正则表达式
RE 1 = a(a*) 且 RE 2 = (aa)*
因此,L 1 = { a,aa, aaa, aaaa, ....} (所有可能长度的字符串,不包括 Null)
L 2 = { ε, aa, aaaa, aaaaaa,.......} (偶数长度的字符串,包括 Null)
L 1 ∩ L 2 = { aa, aaaa, aaaaaa,.......} (偶数长度的字符串,不包括 Null)
RE (L 1 ∩ L 2 ) = aa(aa)* 本身就是一个正则表达式。
于是,证明了。
性质3. 正则集的补集是正则的。
证明-
让我们采用正则表达式 -
RE = (aa)*
所以,L = {ε, aa, aaaa, aaaaaa, ....} (偶数长度的字符串,包括 Null)
L的补集是L中不存在的所有字符串。
因此,L' = {a, aaa, aaaaa, .....}(奇数长度的字符串,不包括 Null)
RE (L') = a(aa)* 本身就是一个正则表达式。
于是,证明了。
性质4. 两个正则集的差值是正则的。
证明-
让我们采用两个正则表达式 -
RE 1 = a (a*) 且 RE 2 = (aa)*
因此,L 1 = {a, aa, aaa, aaaa, ....} (所有可能长度的字符串,不包括 Null)
L 2 = { ε, aa, aaaa, aaaaaa,.......} (偶数长度的字符串,包括 Null)
L 1 – L 2 = {a, aaa, aaaaa, aaaaaaa, ....}
(除 Null 之外的所有奇数长度的字符串)
RE (L 1 – L 2 ) = a (aa)* 这是一个正则表达式。
于是,证明了。
性质5. 正则集的反转是正则的。
证明-
如果L是正则集,我们必须证明L R也是正则集。
令L = {01, 10, 11, 10}
RE(左)= 01 + 10 + 11 + 10
L R = {10, 01, 11, 01}
RE (LR ) = 01 + 10 + 11 + 10 这是正则
于是,证明了。
性质6. 正则集的闭包是正则的。
证明-
如果 L = {a, aaa, aaaaa, .......} (奇数长度的字符串,不包括 Null)
即,RE (L) = a (aa)*
L* = {a, aa, aaa, aaaa , aaaaa,……………} (除 Null 之外的所有长度的字符串)
RE (L*) = a (a)*
于是,证明了。
性质7. 两个正则集的串联是正则的。
证明 -
设RE 1 = (0+1)*0 且 RE 2 = 01(0+1)*
这里,L 1 = {0, 00, 10, 000, 010, ……} (以 0 结尾的字符串集合)
且L 2 = {01, 010,011,.....} (以 01 开头的字符串集)
那么,L 1 L 2 = {001,0010,0011,0001,00010,00011,1001,10010,........................}
包含 001 作为子字符串的字符串集合,可以用 RE 表示 - (0 + 1)*001(0 + 1)*
于是,证明了。
与正则表达式相关的恒等式
给定 R、P、L、Q 作为正则表达式,以下恒等式成立 -
- ∅* = ε
- ε* = ε
- RR* = R*R
- R*R* = R*
- (R*)* = R*
- RR* = R*R
- (PQ)*P =P(QP)*
- (a+b)* = (a*b*)* = (a*+b*)* = (a+b*)* = a*(ba*)*
- R + ∅ = ∅ + R = R (并集恒等式)
- R ε = ε R = R (串联恒等式)
- ∅ L = L ∅ = ∅ (串联的零子)
- R + R = R (幂等定律)
- L(M+N)=LM+LN (左分配律)
- (M + N) L = ML + NL (右分配律)
- ε + RR* = ε + R*R = R*