11

こんにちは、初めてackです(実際には30分前に始めました)。検索結果の質に感銘を受けました。

しかし、私のソースファイルには多くのコメントがあり、クラス/関数名を検索すると、コメント行で約20件、実際のコードで2件の結果が得られます。

//#の間のテキストを除外する方法はあり/* */ますか?

4

2 に答える 2

3

次のようなものを使用して、1 行のコメントをスキップできます。

# 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'
于 2015-07-21T10:48:57.707 に答える
0

あなたはそうしない。代わりに、ソースにタグを付けます。

コメントをスキップすると、その場で入力を解析することになりますが、これは一般的に処理が遅くなります。さらに、プログラミング言語ごとにコメントの構文が異なるため、この実装は簡単ではありません。独自の正規表現を展開することもできますが (たとえば、C では次のように使用します\/\*(\*(?!\/)|[^*])*\*\/)、これらのパターンは複雑であり、ack、ag、および grep が設計されている迅速な検索の価値よりも面倒です。あなたが本当に探しているのは、関数とクラスを介してコードをナビゲートする方法です。これがコードのタグ付けの目的です。universal-ctags、http: //docs.ctags.io/en/latest/ を確認してください。

于 2018-07-13T05:17:42.817 に答える