【发布时间】:2014-01-19 01:08:37
【问题描述】:
在 Python 的正则表达式方言(正确的术语?)中,我们有 (?<=...),可用于缩小针对给定模式之前的搜索范围。
尝试在 Emacs 上执行一些复杂的多缓冲区搜索,例如仅搜索那些 content 包含 "x" 和/或 "y" 的缓冲区,然后在匹配缓冲区的 content 中搜索 "foo" 并列出结果,不是t 硕果累累,因为:
(multi-occur-in-matching-buffers "." "\\(?<=:x\\|y\\)foo")
没有匹配任何东西。
Regexp Syntax Summary 声明它不适用于 GNU Emacs/Elisp。
我该如何解决这个问题?
【问题讨论】:
-
你不能这样分两个阶段吗?收集包含第一个查询匹配项的缓冲区列表,然后创建缓冲区名称的正则表达式以在其中搜索第二个表达式。
-
@tripleee 问题已更新
-
轻微更新,
(multi-occur-in-matching-buffers "." "\\(x\\|y\\).*\\(\n.*\\)*foo\\|foo.*\\(\n.*\\)*\\(x\\|y\\)")对我有用,但当然,正则表达式不是很优雅。不幸的是,multi-occur-in-matching-buffers不会返回匹配列表,因此您必须分两步解析*Occur*缓冲区。