鉴于下面的语言,我如何找到语言的正则表达式
L = {a ^ n b ^ m | n => 1,m => 1,nm => 3}
答案 0 :(得分:4)
n> = 1且m> = 1且nm> = 3为真:
n = 1时,M> = 3
N'GT; = 3,m = 1的
N'GT; = 2,M> = 2
所以L = {abbb,abbbb,abbbbb,...} U {aaab,aaaab,aaaaab,...} U {a ^ n b ^ m | n> = 2,m> = 2}
这个正则表达式应该等同于L:
((abbb(b *))|(aaa(a *)b)|(aa(a *)bb(b *)))
可能有一个比这更简洁的答案。
答案 1 :(得分:3)
写下一组语言示例单词。感受他们。寻找模式。寻找公共前缀/后缀/子串。
abbb
abbbb
abbbbb
aabb
aabbb
aabbbb
aaab
aaabb
aaabbb
aaaab
aaaabb
aaaabbb
例如:请注意,所有字词均以a
开头,以b
结尾。所以,你的正则表达式看起来像a...b
。 ...
部分是什么样的?
bb
bbb
bbbb
ab
abb
abbb
aa
aab
aabb
aaa
aaab
aaabb
这类似于a
后跟至少一个a
或b
可能后跟零个或多个b
s。或者只是一系列超过两个b
s。
a(a+|b)b*|b{2,}
您还可以说它是一系列至少两个a
s或一系列至少两个b
s或一系列a
s后跟{{1 }}秒。我不会写下那个表达。
毕竟,这个是作业,所以我会留给你去解决这个问题并将其与第一个结果放在一起。 (顺便说一句:我使用的所有快捷方式只是只是语法糖而且不使正则表达式更强大。也就是说有一个简单的句法转换将它们变成标准的正则表达式。)
[我只是希望我是对的,不要自言自语: - )]