Emacs:如何复制正则表达式匹配?

时间:2012-10-12 16:35:13

标签: regex emacs

我只是尝试使用正则表达式搜索/突出显示缓冲区中的文本并复制它。我不想要整条线,只需要比赛。有什么想法吗?

我有大量的文字行包含标签“[12345] [09876]”,我想要正则表达式 复制所有标签。

e.g。

Lorem ipsum dolor sit amet, consectetuer adipiscing elit [12345][09876], 
sed diam nonummy [12345][123456] nibh euismod tincidunt ut laoreet dolore 
magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud [54321][09876] 
exerci tation ullamcorper suscipit lobortis nisl ut aliquip [23451][09656]

1 个答案:

答案 0 :(得分:6)

是的,增量搜索不会移动点位置,所以做yank不会复制匹配。

最简单的解决方案可能如下。

定义复制搜索匹配的函数:

(defun copy-isearch-match ()
    (interactive)
    (copy-region-as-kill isearch-other-end (point)))

并将其添加到搜索模式地图

(define-key isearch-mode-map (kbd "M-w") 'copy-isearch-match)

然后执行M-x isearch-forward-regexp,您可以按M-w复制匹配。