正则表达式解析3型语法

时间:2012-02-13 14:11:47

标签: regex parsing grammar context-free-grammar chomsky-hierarchy

阅读Chomsky hierarchy ... ...我知道regexp不能解析type-2语法(无上下文语法),也不能解析type-1和type-0。 正则表达式可以解析/捕获所有类型3语法(regular grammars)吗?

1 个答案:

答案 0 :(得分:1)

是的,只要他们支持交替,连接和Kleene明星。这是PCRE(Perl / Java / JavaScript / PHP / ...)类型的正则表达式的情况:交替由((...)|(...))实现,由(...)(...)连接,Kleene星由{{1实现}}。 (还有一些其他细节 - 在大多数这些语言中,您需要使用类似(...)*\A的内容来表示“字符串开头”和“字符串结束”,其中包含常规语法被认为是理所当然的 - 但这就是主意。)

但是在编程环境中所谓的“正则表达式”并不一定具备以上所有内容;例如,POSIX Basic Regular Expressions仅支持非常有限的交替形式,其中交替的所有“分支”由单个字符组成(例如,而PCRE具有\z和特殊情况等价的{ {1}},POSIX BRE只有(a|b|c),因此无法表达[abc])。