📅  最后修改于: 2020-12-17 06:57:42             🧑  作者: Mango
在∑ = {0,1}上,为该语言编写一个正则表达式,以接受所有从1开始并以0结尾的所有字符串。
解:
在正则表达式中,第一个符号应为1,最后一个符号应为0。re如下所示:
R = 1 (0+1)* 0
为该语言以a开头和结尾并在其中包含b的任何组合的语言编写正则表达式。
解:
正则表达式为:
R = a b* b
为以a开头但不包含连续b的语言编写正则表达式。
解决方案:必须为该语言构建正则表达式:
L = {a, aba, aab, aba, aaa, abab, .....}
上述语言的正则表达式为:
R = {a + ab}*
为接受所有字符串的语言编写正则表达式,在该字符串中,任意数量的a后跟任意数量的b后跟任意数量的c。
解决方案:众所周知,任意数量的a表示a *任意数量的b意味着b *,任意数量的c意味着c *。由于如问题陈述中所述,b出现在a之后,c出现在b之后。因此正则表达式可能是:
R = a* b* c*
在∑ = {0}上编写具有正则字符串长度的语言的正则表达式。
解:
必须为该语言构建正则表达式:
L = {ε, 00, 0000, 000000, ......}
上述语言的正则表达式为:
R = (00)*
为具有字符串的语言编写正则表达式,该字符串应至少为1且至少为1。
解:
正则表达式为:
R = [(0 + 1)* 0 (0 + 1)* 1 (0 + 1)*] + [(0 + 1)* 1 (0 + 1)* 0 (0 + 1)*]
描述以下正则表达式表示的语言
r.e. = (b* (aaa)* b*)*
解:
可以通过查找正则表达式的含义来预测该语言。我们首先将正则表达式拆分为:
re =(b的任何组合)(aaa)*(b的任何组合)
L = {语言由a组成的三元组字符串组成,b的数量不受限制}
在∑ = {0,1}上编写语言L的正则表达式,以使所有字符串都不包含子字符串01。
解:
语言如下:
L = {ε, 0, 1, 00, 11, 10, 100, .....}
上述语言的正则表达式如下:
R = (1* 0*)
用包含{0,1}上的字符串的语言编写正则表达式,其中在任意两次出现的0之间,在两次两次出现的1之间,至少有两次出现1。
解决方案:两次出现的0之间至少有两个1可以表示为(0111 * 0)*。
类似地,如果不出现0,则也允许任何数量的1。因此,要求的语言是:
R = (1 + (0111*0))*
为包含字符串的语言编写正则表达式,其中每个0后面紧跟11。
解:
正常的期望是:
R = (011 + 1)*