解决方法
从纯粹的理论角度来看,正则表达式等同于理性语言,它们是在以下基础上构建的:
> {}(一种没有语言的语言)是理性的.
> {a}(具有单个单字母的语言)是理性的.
>如果L和M是两种理性语言,那么它们的联合(L或M中的单词)是合理的.
>如果L和M是两种理性语言,那么它们的连接LM(通过将L中的单词加到M中的单词构造的单词)也是合理的.
>如果L是理性语言,则L *(通过连接来自语言L的任意数量的单词构造的单词)也是合理的.
这种建设性方法补充了正则表达式识别/匹配方法,并有助于构造与表达式匹配的递归单词:
> make({})=“”> make({a})=“a”> make(A | B)=翻转币? make(A):make(B)> make(AB)= make(A)make(B)> make(A *)=翻转币? “”:make(A)make(A *)