在 Emacs Lisp 函数中使用正则表达式将换行符替换为 <br>\n

Replace newline characters with <br>\n using regex in Emacs Lisp function

我想在 markdown 模式下用 <br>\n 替换所有换行符。我写了这段代码。没用。

(add-hook 'markdown-mode-hook
          (lambda ()
            (local-set-key (kbd "<f2>")
                           (lambda ()
                             (interactive)
                             (save-excursion
                               (beginning-of-buffer)
                               (while (re-search-forward "\(<br>\)?\n" nil t)
                                 (replace-match "<br>\n" nil nil))
                               (save-buffer))))))

但是如果我在缓冲区中使用正则表达式 \(<br>\)?C-q C-j 交互调用 replace-regexp 并替换字符串 <br>C-q C-j,它就可以工作。我已经为此苦苦挣扎了一段时间。我的代码有什么问题?

您的字符串未转义。试试 "\(<br>\)?\n".