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

时间:2017-01-22 23:12:29

标签: regex formal-languages

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

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

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

我觉得他们都创造了具有世界回文的语言。是对的吗?在第一个中,两个都是必须的,而b是零或无限制。第二个是相同的。字符串aaa在两者中都是必须的,而且b是零或无限制。

我是对的吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

Palindromes是自己保持不变的词语。但是这两种语言都有 not 回文的元素,比如单词aaab,因为aaab!= baaa。因此,谈论回文并不是正确的论据。