正在读取Chomsky hierarchy ...我知道regexp不能解析类型2语法(上下文无关语法),也不能解析类型1和类型0。正则表达式可以解析/捕获所有类型3语法(regular grammars)吗?
发布于 2012-02-13 22:33:02
是的,只要它们支持交替、连接和Kleene星型。PCRE的正则表达式就是这种情况(Perl/Java/JavaScript/PHP/...)类型: alternation由((...)|(...))实现,concatenation由(...)(...)实现,Kleene star由(...)*实现。(还有一些其他细节-在大多数这些语言中,您需要使用\A和\z之类的东西来指示“字符串的开始”和“字符串的结束”,这在常规语法中是理所当然的-但这就是我们的想法。)
但在编程环境中,并非所有被称为“正则表达式”的东西都必须具备上述所有条件;例如,POSIX Basic Regular Expressions只支持一种非常有限的交替形式,其中所有交替的“分支”都由单个字符组成(例如,PCRE既有(a|b|c)又有特例等价的[abc],而POSIX BREs只有[abc],所以不能表达像(ab|c)这样的东西)。
https://stackoverflow.com/questions/9261972
复制相似问题