现代正则表达式引擎当然可以解析比常规语言集更大的语言集。这么说,四个经典的乔姆斯基集都没有被正则表达式准确识别。正则表达式清楚地识别所有常规语言。有一些经典的上下文无关语言无法被正则表达式识别,例如平衡括号语言a^n b^n
,除非有计数的反向引用可用。但是,正则表达式可以解析ww
上下文相关的语言。
实际上,形式语言理论中的正则表达式与正则表达式的关系不大。在最一般的情况下,匹配具有无限反向引用的正则表达式是 NP-Complete 的,因此所有足够强大的正则表达式的模式匹配算法都是指数的,至少在一般情况下是这样。然而,对于大多数输入来说,大多数时候它们都非常快。众所周知,匹配上下文无关语言最多比 快n^3
,因此正则表达式中有一些语言不是上下文无关的(如ww
),但并非所有上下文无关语言都可以被正则表达式解析。0 型语言通常是不可判定的,子正则表达式无法到达那里。
因此,作为一个不是很确定的结论,正则表达式可以解析广泛的语言集,包括所有常规语言,以及一些上下文无关和上下文敏感的语言,但它并不完全等于任何这些语言集。还有其他类别的语言和其他分类法,您可以在其中找到更准确的答案,但是没有任何分类法将上下文无关语言作为语言层次结构中的适当子集包含在正则表达式中,因为正则表达式无法准确识别单一语言仅在某些部分与上下文无关语言相交,两者都不是另一个的适当子集。