正则表达式 - 它们是相同的正则表达式吗?

Regular expressions - They are the same regular expressions?

我有两个问题。这些正则表达式是否相同?

(1) b*(ab*)* 和 (b*a)*b *

(2) b*(aaab*)* 和 (b*aaa) * b*

我觉得他们都创造了具有世界回文的语言。那正确吗?在第一个中,a 是必须的,b 是零或无限的。第二个是一样的。字符串 aaa 在两者中都是必须的,b 为零或无限制。

我说得对吗?

在这两种情况下,这两个正则表达式并不相同(它们是不同的正则表达式),但它们确实描述的是同一种语言。所以这两个问题的答案(来自你的练习?)是 "yes".

在第一种情况下,正则表达式描述了 任何 字符串的语言 ab。在第二种情况下,您将获得所有 a 都以三元组出现的语言,作为组合 aaa。这第一种语言也是用正则表达式(a|b)*(或者(a + b)*,或者(a U b)*来描述的,我不知道你的书用的是什么符号),第二种语言也用正则表达式 (aaa|b)*.

在这两种情况下,如果您反转元素,语言将保持不变,因此,如果您反转描述它们的正则表达式,它们也会保持不变。

回文是 它们自身 如果将它们反转则保持不变的词。但是两种语言都有 不是 回文的元素,例如单词 aaab,因为 aaab != baaa。所以在这里谈论回文不是正确的论点。