35.3.5 正则表达式的常见问题

Emacs 的正则表达式实现与同类工具一样,总体上非常健壮,但偶尔会以两种方式引发问题: 匹配可能耗尽内部栈空间并抛出错误,或者匹配耗时过长。 以下建议可以降低这些问题出现的概率,并缓解已发生的问题。

如果遵循以上建议后仍然遇到正则表达式栈溢出, 不妨通过多次函数调用执行匹配,每次使用更简单的正则表达式, 更容易控制回溯行为。

Function: re--describe-compiled regexp &optional raw

为了帮助诊断正则表达式或正则表达式引擎本身的问题, 该函数返回一个字符串,描述 regexp 的编译形式。 要理解其含义,可能需要阅读 Emacs 源代码中 src/regex-emacs.c 文件 里关于 re_opcode_t 类型的说明。

当前仅当 Emacs 使用 --enable-checking 编译时, 该函数才能给出有意义的描述。