如何在Emacs Regexp中替换多个匹配的字符串?

时间:2013-04-25 15:01:01

标签: regex emacs

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

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

并尝试用此

替换它

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

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

1 个答案:

答案 0 :(得分: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中的文字是你的意图吗?)