如何从 ack 结果中排除评论?

问题描述 投票:0回答:2

嗨,我是新来的

ack
(实际上是半小时前开始的)。搜索结果的质量给我留下了深刻的印象。

但是在我的源文件中有很多注释,如果我搜索类/函数名称,我会得到大约 20 个带有注释行的结果和 2 个带有实际代码的结果。

有没有办法排除

//
#
之后或
/* */
之间的文本?

configuration comments ack
2个回答
4
投票

你可以用这样的东西跳过单行注释;

# ignore matches after //
ack '^[^//]*word'
# ignore matches after #
ack '^[^#]*word'

如果您使用

ag
,请记住它可以进行多行匹配:

# ignore matches after //
ag '^[^\n\r//]*word'
# ignore matches after #
ag '^[^\n\r#]*word'

0
投票

你不知道。相反,您可以标记您的来源。

跳过注释意味着动态解析输入,这通常很慢。此外,每种编程语言都有不同的注释语法,这使得实现这一点并不简单。虽然您可以推出自己的正则表达式 - 例如对于 C,请使用如下所示的内容:

\/\*(\*(?!\/)|[^*])*\*\/
——这些模式非常复杂,而且比 ack、ag 和 grep 设计的快速搜索的价值更麻烦。您真正需要的是一种通过函数和类导航代码的方法;这就是标记代码的用途:查看 universal-ctags,http://docs.ctags.io/en/latest/

© www.soinside.com 2019 - 2024. All rights reserved.