0

ディレクトリでキーワードのリストを検索するために正規表現を使用しています。これが私の現在のコードです:

   if (/$search/i) 
   {

        printf $out "%s\t%s\n",$File::Find::name,$1;       
   }

上記のコード$1では、キーワード フレーズのみを指定しています。しかし、キーワード全体が必要です。

例: 「スイープ」を検索しています

現在の出力: C:\ac\acfrd\file.sql SWEEP。しかし、ファイルには「SWEEP_ID」という単語が含まれており、出力を「SWEEP」ではなく「SWEEP_ID」にしたいのです。

4

2 に答える 2

5

この正規表現を試してください:

/\b(\w*$search\w*)\b/i

検索語とオプションの隣接する単語記号( \w- 文字、数字など) をにキャプチャします$1キャプチャされた文字シーケンスは、単語境界( \b- 句読点、空白、文字列の先頭または末尾)で囲まれます。

上記の正規表現では、検索語の前後に単語記号を追加できます。(例のように)検索語のに追加の記号のみを許可する場合は、最初の\w*.

/\b($search\w*)\b/i

Perl の「単語記号」の定義に依存したくない場合は\w、独自の文字クラスに置き換えます。たとえば、(文字とアンダースコアのみを許可します):

/\b([_a-z]*$search[_a-z]*)\b/i
于 2013-04-25T12:25:58.547 に答える
0
/($search\S+)/

これはうまくいくかもしれませんが、あなたの質問は明確ではありません...

于 2013-04-25T12:26:49.210 に答える