常规套装


任何表示正则表达式值的集合称为正则集。

正则集的性质

财产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*