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

Eri*_*ebo 6 regex emacs

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

如何在 emacs 中反向引用 9 个以上的捕获组?可以使用命名组吗?如果是这样,如何?

Gil*_*il' 7

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

\1 … \9 \,(or (match-string 10) "")
Run Code Online (Sandbox Code Playgroud)

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