为给定的语言构造正则表达式。
问题一
为接受包含任意数量a和b的所有字符串的语言编写正则表达式。
解决方案
正则表达式将是-
re=(a+b)*
这将使集合L={E,a,aa,b,bb,ab,ba,aba,bab,.....},a和b的任意组合。
(a+b)*显示与a和b的任意组合,甚至是空字符串。
问题二
为以a开头但不具有连续b的语言编写正则表达式。
解决方案
必须为语言构建正则表达式:L={a,aba,aab,aba,aaa,abab,.....}
上述语言的正则表达式是-
R={a+ab}*
问题三
为接受所有字符串的语言编写正则表达式,其中任意数量的a后跟任意数量的b后跟任意数量的e。
解决方案
我们知道,任意数量的a意味着a*任意数量的b意味着b*,任意数量的e意味着c*。因为正如问题陈述中给出的那样,b出现在a之后,e出现在b之后。所以正则表达式可以是-
R=a*b*c*
问题四
描述由以下正则表达式表示的语言re=(b*(aaa)*b*)*
解决方案
可以通过查找正则表达式的含义来从正则表达式中预测语言。我们首先将正则表达式拆分为-
re.=(b's的任意组合)(aaa)*(b's的任意组合)
L={语言由a出现三元组的字符串组成,b的个数没有限制}