Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 字符串的重复、交叉副本的正则表达式?_Regex_Theory_Regular Language - Fatal编程技术网

Regex 字符串的重复、交叉副本的正则表达式?

Regex 字符串的重复、交叉副本的正则表达式?,regex,theory,regular-language,Regex,Theory,Regular Language,查找此语言的正则表达式: L={λ,ab,abac,abacab,abacabac,abacabab,} 好的,我已经研究这个问题一段时间了。到目前为止,我知道“ab”重复它自己(ab)。但我被“ac”难住了。。。。它不可能是(ab)(ac)*。。。 任何指点都将不胜感激 我看过我的书,没有一个例子可以告诉我如何解决这个问题 让我们先把事情简化一点。让我们让B表示ab,C表示ac。然后您将尝试生成字符串 λ、 卑诗省,卑诗省,卑诗省,卑诗省 在本例中,您可能希望将正则表达式拆分为两种情况:一种是

查找此语言的正则表达式:

L={λ,ab,abac,abacab,abacabac,abacabab,}

好的,我已经研究这个问题一段时间了。到目前为止,我知道“ab”重复它自己(ab)。但我被“ac”难住了。。。。它不可能是(ab)(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,但我将把它作为一个练习。:-)

希望这有帮助