为什么正则表达式不能用于描述递归结构?

时间:2014-01-19 10:20:18

标签: regex recursion

有些人可以向我解释为什么你不能使用正则表达式来描述递归结构。

例如

  • A = * A?B

2 个答案:

答案 0 :(得分:3)

因为正则表达式(至少是常规语言)对应于有限状态机。您需要无限数量的状态来跟踪任意级别的嵌套。

答案 1 :(得分:2)

即使正则表达式不能通过正式定义来表达递归,但对于像Perl和Ruby这样的语言,有“正则表达式”implementations that support recursion

对于python,还有一个alternative regex implementation支持递归,它不在标准库中。

但同样,regular languages没有递归结构,因此正式的正则表达式无法按定义表达递归结构。