Regex 字符串的重复、交叉副本的正则表达式?
查找此语言的正则表达式: L={λ,ab,abac,abacab,abacabac,abacabab,} 好的,我已经研究这个问题一段时间了。到目前为止,我知道“ab”重复它自己(ab)。但我被“ac”难住了。。。。它不可能是(ab)(ac)*。。。 任何指点都将不胜感激Regex 字符串的重复、交叉副本的正则表达式?,regex,theory,regular-language,Regex,Theory,Regular Language,查找此语言的正则表达式: L={λ,ab,abac,abacab,abacabac,abacabab,} 好的,我已经研究这个问题一段时间了。到目前为止,我知道“ab”重复它自己(ab)。但我被“ac”难住了。。。。它不可能是(ab)(ac)*。。。 任何指点都将不胜感激 我看过我的书,没有一个例子可以告诉我如何解决这个问题 让我们先把事情简化一点。让我们让B表示ab,C表示ac。然后您将尝试生成字符串 λ、 卑诗省,卑诗省,卑诗省,卑诗省 在本例中,您可能希望将正则表达式拆分为两种情况:一种是
我看过我的书,没有一个例子可以告诉我如何解决这个问题 让我们先把事情简化一点。让我们让B表示
ab
,C表示ac
。然后您将尝试生成字符串
λ、 卑诗省,卑诗省,卑诗省,卑诗省
在本例中,您可能希望将正则表达式拆分为两种情况:一种是生成
λ、 卑诗省,卑诗省,卑诗省,卑诗省
一个产生
B、 BCB,BCB,BCB
前者由正则表达式(BC)*
给出,后者由正则表达式(BC)*B
给出。如果你把这些组合在一起,你会得到(BC)*|(BC)*B
,可以重写为(BC)*(B |λ)
。剩下要做的就是通过将B
和C替换为
ab和
ac`来扩展它,这将给出最终的正则表达式
(abac)*(ab | λ)
这个观察还应该让您为该语言设计DFA或NFA,但我将把它作为一个练习。:-)
希望这有帮助