4

我正在给自己写一个小辅助函数,我想做的一件事是基于正则表达式进行替换。replace-regexp-in-string看起来是个不错的候选人。但是,我无法将其替换为捕获。以下是我根据 emacs wiki 尝试过的所有事情:

(replace-regexp-in-string "a(b)c" "d\0f" "abc")
(replace-regexp-in-string "a(b)c" "d \0 f" "abc")
(replace-regexp-in-string "a(b)c" "d\\0f" "abc")
(replace-regexp-in-string "a(b)c" "d \\0 f" "abc")
(replace-regexp-in-string "a(b)c" "d\1f" "abc")
(replace-regexp-in-string "a(b)c" "d \1 f" "abc")
(replace-regexp-in-string "a(b)c" "d\\1f" "abc")
(replace-regexp-in-string "a(b)c" "d \\1 f" "abc")

以上所有似乎都评估为“abc”,这让我非常困惑。对于d\0f,我希望结果是“dbf”。我开始怀疑这个函数不做捕获。

这样做的正确方法是什么?或者,一般来说这样做的方法是什么?许多处理替换正则表达式的函数只处理整个缓冲区,而我需要转换它放置的一些文本。

4

1 回答 1

4

如果你看一下这个函数C-h f replace-regexp-in-string\\(regex\\)描述\\1

您还可以查看其他与缓冲区一起使用的函数,例如,在我的 config中。

于 2013-04-26T17:44:37.440 回答