Igo*_*evo 6 regex grammar backreference regular-language finite-state-automaton
我理解正则表达式是如何得到它们的名字的,并且已经阅读了相关的问题(为什么正则表达式称为"常规"表达式?),但我仍然想知道正则表达式是否总是规则的.
例如,反向引用如何定期?这不需要一些内存,因此无法通过有限状态自动机匹配/生成吗?
您引用的问题的答案中的链接指出(在维基百科中),这与现代编程语言提供的许多正则表达式引擎相反,这些引擎增强了允许识别无法用经典正则表达式表达的语言的功能。
所以我想说,正则表达式的演变使其偏离了表达常规语言的原始想法。
几乎所有现代正则表达式库中都有的许多功能提供了远远超过正则语言的表达能力。例如,许多实现允许使用括号对子表达式进行分组,并调用它们在同一表达式中匹配的值(反向引用)。这意味着,除其他外,模式可以匹配重复单词的字符串,例如“papa”或“WikiWiki”,在形式语言理论中称为方块。这些字符串的模式是
(.+)\1。