为给定的语言构造正则表达式。


问题 1

编写接受包含任意数量的 a 和 b 的所有字符串的语言的正则表达式。

解答

正则表达式将是:

r.e. = (a + b)*

这将给出集合 L = {E, a, aa, b,bb,ab,ba, aba, bab,.....},a 和 b 的任意组合。

(a + b)* 表示 a 和 b 的任意组合,甚至包括空字符串。

问题 2

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

解答

必须为以下语言构建正则表达式:L = {a, aba, aab, aba, aaa, abab, .....}

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

R = {a + ab}*

问题 3

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

解答

众所周知,任意数量的 a 表示为 a*,任意数量的 b 表示为 b*,任意数量的 c 表示为 c*。根据题目描述,b 出现在 a 后面,c 出现在 b 后面。所以正则表达式可以是:

R = a* b* c*

问题 4

描述以下正则表达式表示的语言 r.e. = (b* (aaa)* b*)*

解答

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

r.e. =(任意数量的 b) (aaa)* (任意数量的 b)

L = {该语言由字符串组成,其中 a 以三元组出现,对 b 的数量没有限制}

更新于: 2021年6月12日

7K+ 次查看

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告
© . All rights reserved.