2011-12-15 98 views
2

我喜欢在没有周围文本的单独缓冲区中看到正则表达式的匹配列表。例如,我喜欢看到在我的HTML文档中定义的所有类名。另外,我希望看到每场比赛的计数。有没有任何emacs库?提取正则表达式的匹配?

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

 
add related resources or links 
always respect the original author" 

和正则表达式

 
"re." 

我找的比赛和计数

 
rel: 1 
res: 2 

请注意该版本是由“相关“,资源来自”资源“和”尊重“

+1

你可以尝试给出一个你想要的输入和输出的例子吗?如果你减少阅读者分析和理解你的问题所需的工作量,他们就更有可能回答。 – 2011-12-15 14:19:20

回答

5
(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)))) 
+0

太棒了,正如我所问。这可以进一步增强。例如,当您点击结果中的特定匹配项时,它将以M-x在另一个缓冲区中出现M-x突出显示 - 正则表达式的方式显示它们。另一种合适的显示器将与M-x org模式中的树节点一样。 – aartist 2011-12-15 16:18:29