gpt4 book ai didi

regex - 如何用正则表达式替换 elisp 函数中的字符串?

转载 作者:行者123 更新时间:2023-12-02 00:09:25 25 4
gpt4 key购买 nike

我正在为自己编写一个小辅助函数,我想做的其中一件事是基于正则表达式进行替换。 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”。我开始怀疑这个函数不做捕获。

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

最佳答案

如果您查看此函数的描述 ( C-h f replace-regexp-in-string ),您会注意到捕获被指定为 \\(regex\\) , 简称 \\1等。见Emacs's regular expressions的说明- 它们与 Perl 和 POSIX 正则表达式略有不同。

您还可以查看其他与缓冲区一起使用的函数,例如 in my config .

关于regex - 如何用正则表达式替换 elisp 函数中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com