个性化阅读
专注于IT技术分析

自动机正则表达式的例子

点击下载

范例1:

在∑ = {0,1}上,为该语言编写一个正则表达式,以接受所有以1开头并以0结尾的所有字符串。

解:

在正则表达式中,第一个符号应为1,最后一个符号应为0。如下:

R = 1 (0+1)* 0

范例2:

为该语言以a开头和结尾并且之间包含b的任何组合的语言编写正则表达式。

解:

正则表达式为:

R = a b* b

范例3:

为以a开头但不包含连续b的语言编写正则表达式。

解决方案:必须为该语言构建正则表达式:

L = {a, aba, aab, aba, aaa, abab, .....}

上述语言的正则表达式为:

R = {a + ab}*

范例4:

为接受所有字符串的语言编写正则表达式,在该字符串中,任意数量的a后跟任意数量的b后跟任意数量的c。

解决方案:我们知道,任意数量的a意味着a *任意数量的b意味着b *,任意数量的c意味着c *。由于如问题陈述中所述,b出现在a后面,而c出现在b后面。因此正则表达式可能是:

R = a* b* c*

范例5:

在具有等于字符串长度的∑ = {0}上编写该语言的正则表达式。

解:

必须为该语言构建正则表达式:

L = {ε, 00, 0000, 000000, ......}

上述语言的正则表达式为:

R = (00)*

范例6:

为具有字符串的语言编写正则表达式,该字符串应至少为1且至少为1。

解:

正则表达式为:

R = [(0 + 1)* 0 (0 + 1)* 1 (0 + 1)*] + [(0 + 1)* 1 (0 + 1)* 0 (0 + 1)*]

范例7:

描述以下正则表达式表示的语言

r.e. = (b* (aaa)* b*)*

解:

可以通过查找正则表达式的含义来预测该语言。我们首先将正则表达式拆分为:

回覆。 =(b的任何组合)(aaa)*(b的任何组合)

L = {语言由a组成的三元组字符串组成,b的数量不受限制}

范例8:

在∑ = {0,1}上编写语言L的正则表达式,以使所有字符串都不包含子字符串01。

解:

语言如下:

L = {ε, 0, 1, 00, 11, 10, 100, .....}

上述语言的正则表达式如下:

R = (1* 0*)

范例9:

用包含{0,1}上的字符串的语言编写正则表达式,其中在任意两次出现的0之间,在两次两次出现的1之间,至少有两次出现1。

解决方案:两次出现的0之间至少有两个1可以表示为(0111 * 0)*。

类似地,如果不出现0,则也允许任何数量的1。因此,所需语言为:

R = (1 + (0111*0))*

范例10:

为包含字符串的语言编写正则表达式,其中每个0后面紧跟11。

解:

正常的期望是:

R = (011 + 1)*

赞(1)
未经允许不得转载:srcmini » 自动机正则表达式的例子

评论 抢沙发

评论前必须登录!