我对正则表达式感到困惑。可以有一个识别无限语言的正则表达式,还是所有正则表达式都能识别有限语言?
答案 0 :(得分:6)
绝对可以构建识别无限语言的正则表达式。例如,简单正则表达式a*
匹配无限语言
{ε,a,aa,aaa,aaaa,...}
星号运算符在正则表达式中是必不可少的,以使它们能够识别无限的字符串集。
确实,所有有限语言都是规则的,但并非所有常规语言都是有限的(如上所示)。形式语言理论告诉我们,有很多语言是无限但不规则的(例如{0 n 1 n |n≥0}),所以你不能总是为任意无限的语言写一个正则表达式。
希望这有帮助!