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