📅  最后修改于: 2020-12-17 09:09:02             🧑  作者: Mango
例如:
在正则表达式中,x *表示x出现零次或多次。它可以生成{e,x,xx,xxx,xxxx,…..}
在正则表达式中,x +表示x的一个或多个出现。它可以生成{x,xx,xxx,xxxx,…..}
常规语言的各种操作是:
联合:如果L和M是两种常规语言,则它们的联合LUM也是联合。
1. L U M = {s | s is in L or s is in M}
交集:如果L和M是两种常规语言,则它们的交集也是交集。
1. L ⋂ M = {st | s is in L and t is in M}
Kleen闭包:如果L是常规语言,则其Kleen闭包L1 *也将是常规语言。
1. L* = Zero or more occurrence of language L.
在集合∑ = {a}上为接受a的所有组合的语言编写正则表达式
解:
a的所有组合均意味着a可以是零,单,双等等。如果a出现0次,则表示为null字符串。那就是我们期望{ε,a,aa,aaa,….}的集合。因此,我们为此给出一个正则表达式:
R = a*
那是克莱恩的闭包。
在集合∑ = {a}上,为接受a的所有组合(除了空字符串)编写语言的正则表达式
解:
必须为该语言构建正则表达式
L = {a, aa, aaa, ....}
此设置指示没有空字符串。因此我们可以将正则表达式表示为:
为该语言编写正则表达式,以接受包含任意数量的a和b的所有字符串。
解:
正则表达式为:
r.e. = (a + b)*
这将使集合为L = {ε,a,aa,b,bb,ab,ba,aba,bab,…..},a和b的任意组合。
(a + b)*显示与a和b的任何组合,甚至是空字符串。