Regex 提取正则表达式的匹配项?

Regex 提取正则表达式的匹配项?,regex,emacs,elisp,Regex,Emacs,Elisp,我喜欢在单独的缓冲区中查看正则表达式的匹配列表,而不需要周围的文本。例如,我喜欢看到HTML文档中定义的所有类名。另外,我喜欢看每场比赛的计数。是否有用于此的emacs库 例如,如果我有一个文本: add related resources or links always respect the original author" 添加相关资源或链接 始终尊重原作者” 和一个regexp "re." “是的。” 我在找火柴和计数 rel: 1 res: 2 rel:1 决议:2 请注意,rel来自

我喜欢在单独的缓冲区中查看正则表达式的匹配列表,而不需要周围的文本。例如,我喜欢看到HTML文档中定义的所有类名。另外,我喜欢看每场比赛的计数。是否有用于此的emacs库

例如,如果我有一个文本:

add related resources or links always respect the original author" 添加相关资源或链接 始终尊重原作者” 和一个regexp

"re." “是的。” 我在找火柴和计数

rel: 1 res: 2 rel:1 决议:2
请注意,rel来自“相关”,res来自“资源”和“尊重”“

你能试着给出一个你想要的输入和输出的例子吗?如果你减少读者解析和理解你的问题所需的工作量,他们就更有可能回答。很好,正如我所说的。这可以进一步加强。例如,当您单击结果中的某个特定匹配项时,它将在另一个缓冲区中以M-x出现M-x高亮显示regexp的方式显示它们。另一种合适的显示方式是在M-x组织模式下显示为树节点。
(defun my-re-counter (regexp)
  (interactive "sregexp: ")
  (let (matches)
    (goto-char (point-min))
    (while (re-search-forward regexp nil t)
      (let ((match (assoc (match-string 0) matches)))
        (if match
            (setcdr match (1+ (cdr match)))
          (push (cons (match-string 0) 1) matches))))

    (pop-to-buffer "*regexp counts*")
    (erase-buffer)
    (dolist (match matches)
      (insert (car match) ": " (int-to-string (cdr match)) "\n"))
    (goto-char (point-min))))