如何在 emacs 中使用超过 9 个正则表达式捕获组?

如何在 emacs 中使用超过 9 个正则表达式捕获组?

我正在尝试使用 emacs 的 replace-regex 命令将相当长的值序列转换为其他格式。要提取的值超过 9 个,因此 \1 - \9 反向引用不够。

如何在 emacs 中反向引用超过 9 个捕获组?可以使用命名组吗?如果可以,如何使用?

答案1

从 Emacs 23 开始,你可以在正则表达式替换文本。这为您提供了使用更多反向引用的方法。函数match-string返回编号的反向引用。

\1 … \9 \,(or (match-string 10) "")

从 Emacs 22 开始,如果正则表达式中有任何括号组不需要反向引用,请使用\(?:…\)(Emacs 称之为害羞的群体)。

相关内容