1

在 Emacs 正则表达式中,我正在做一个替换正则表达式,搜索这个

<span class="small">\([^<]+\)</span>\([^<]+\)<span class="small">\([^<]+\)</span>

并试图用这个替换它

<span class="small">\1\2</span>

我正在尝试连接两个匹配的字符串。我究竟做错了什么?

4

1 回答 1

2

如果没有说明它对您不起作用,我只能猜测您打算替换为\1\3而不是\1\2.

第二种可能性是您正在操作的文本实际上与您的正则表达式不匹配。

(switch-to-buffer (get-buffer-create "nst.html"))
(insert "<span class=\"small\">foo</span>bar<span class=\"small\">baz</span>")
(goto-char (point-min))
(replace-regexp
  "<span class=\"small\">\\([^<]+\\)</span>\\([^<]+\\)<span class=\"small\">\\([^<]+\\)</span>"
 "<span class=\"small\">\\1\\3</span>")

尝试M-x undo在缓冲区中查看替换操作之前的样子。

(我想丢失文本\2是你的意图吗?)

于 2013-04-25T16:57:41.660 回答