Regex 搜索多行正则表达式
我有几个源文件,它们的函数定义如下Regex 搜索多行正则表达式,regex,emacs,multiline,Regex,Emacs,Multiline,我有几个源文件,它们的函数定义如下 ReturnType ClassName:: FunctionName(FunctionArgs...) { .... } ReturnType ClassName::NestedClassName:: FunctionName(FunctionArgs...) { .... } 我想快速浏览这些文件,分别列出第一类和第二类的所有函数。有没有办法在emacs中实现这一点? 注意:我从[]尝试过C-q C-j。它不起作用。这似乎有两个相互关联的部分:要使
ReturnType ClassName::
FunctionName(FunctionArgs...)
{
....
}
ReturnType ClassName::NestedClassName::
FunctionName(FunctionArgs...)
{
....
}
我想快速浏览这些文件,分别列出第一类和第二类的所有函数。有没有办法在emacs中实现这一点?
注意:我从[]尝试过C-q C-j。它不起作用。这似乎有两个相互关联的部分:要使用的regexp和搜索方法。我做了以下假设(很抱歉没有事先澄清这些;我没有足够的代表发表评论):
^[^:]+::\n.+$
^[^:]+::[^:]+::\n.+$
(在交互式用法中,您将用实际换行符(例如通过C-q C-j)替换\n
)
如果您在Emacs中打开了所有缓冲区,您可以立即使用multi-occurrent
。否则,您可以使用grep
命令调用grep,或者直接使用M-!调用grep
如果您使用的是grep,那么您需要一种不同的方法(或者至少我找不到合适的regexp),一切似乎都正常工作。出于某种原因,您还需要退出+运算符。以下是生成的命令:
grep -A 1 "^[^:]\+::$" files
grep -A 1 "^[^:]\+::[^:]\+::$" files