4

ソースコードで「*」(乗算演算子) を検索するには?

アスタリスク文字ではありません (コメントなど)。ちょうど演算子 *!

/** foo method */    // <- this should not be in search results 
public int foo(int i, int j)
{      
    /* compute the values */ // <- this should not be in search results 
    return i * j;            // <- this should be in search results 
}
4

3 に答える 3

1

この正規表現はトリックを行いました:

^(?!\s*(//|\*|/\*)).*\*
于 2013-03-28T20:24:02.790 に答える
0

正規表現検索を使用して Eclipse を検索できます。使用する正規表現を見つけました。ここで例を見ることができます。この例には、正規表現のテストに使用したさまざまな種類のコメント ブロックが含まれています。

(?mx)(?<![\/\*+\n])\*+(?![\n\*+\/])

それは3つの部分の組み合わせを含みます:

  1. on の否定後読みの/後に 1 つ以上*の が続きます。これはコメントの開始を示します。
  2. 探している実際の一致\*+、または「1 つ以上」*
  3. *任意の数字の後に/.

先頭のmxは、正規表現に複数の行を調べるように指示します。したがって、\*+起動すると、開始コメントが先行せず、終了コメントで終了しない中間パターンが検索されます (*使用される s の数に関係なく)。

これを変更して、コメントの「アート」がどれほど大きくてもクレイジーでも、Java コメントに含まれていないパターンを見つけることができます。コメントに含まれていないことを検索するパターンに(?mx)(?<![\/\*+\n])PATTERN_GOES_HERE(?![\n\*+\/])置き換えて使用します。PATTERN_GOES_HEREこれにより、必要なクレイジーなパターンを挿入できます。コメント内に含まれていない重要な部分は、否定的な後ろ向き/前向きによって処理されます。

于 2013-03-28T20:30:07.710 に答える
0

それは不可能です。Eclipse ファイル検索はコメントを認識しないため、コメント内の結果を簡単に除外することはできません。(セマンティック) Java 検索では、演算子の検索は許可されず、型、メソッドなどのみが検索されます (検索ダイアログの弱点で、正当な識別子でもないテキストの検索が許可されます - テキスト検索のように見えますが、そうではありません)。

したがって、正規表現を使用したファイル検索のみを行うことができます。これは、ほとんどの場合に機能する可能性がありますが、100% 正しくはなく、ソース内のコメントと文字列リテラルのスタイルによっては失敗する可能性があります。

すべての * を検索する正規表現を作成します。「//」、「/ 」、または (行頭の「」または空白の直後のみ) を除きます。特に最後のケースは、長い数学用語をどこで分割するかによって問題になる可能性があります。演算子を前の行の最後の記号のままにしても問題ありませんが、新しい行の最初の記号であれば問題ありません。その場合、検索の緊急性に応じて、検索用にソースを再フォーマットすることを考えるかもしれません。Eclipse では、すべてを再フォーマットするのは非常に簡単です。

于 2013-03-28T18:49:44.310 に答える