2012-01-12 12 views
3

私はperlプログラムをjavaに変換しています。 perlスクリプトでは、ファイルから読み込まれた値が何百もの正規表現パターンに対してチェックされます。私は元のperlプログラムで行われているので、これを静的にしないことを望みます。これをよりダイナミックにするために使用できるデザインパターンはありますか?パターン用のJava正規表現を動的に構築する方法はありますか?

これは、現在のコードの一行です:

$flag++ if ($Part_Name =~ /(harmonic|nsg|white\ sands|sphix|battery|collection|allied)/i); 

は今、別の50〜60行のためにそれを繰り返し、それがありますどのように多くのです。テスト対象の一意の文字列は実際には単独であり、最後に気にするのはif($ flag> 0)です。

答えて

3

実際に正規表現を使用する必要はありません。やっアレイ全体

ジャスト(「白い砂」、例えば、「調和」)あなたがチェックしているかの配列を作成し、ループが含まれていますvalueFromFile.contains(arrayItem)

それが一致した場合、フラグと終了を設定します。大文字と小文字を区別しないように小文字のvalueFromFileを忘れないでください。

正規表現が本当に必要な場合は、containsの代わりにmatchesを使用します。

注:アレイをループせずに明示的にこれを行う方法はありますが、私はまだJavaを書いていません(ある場合は自由に編集できます)。

+0

私はそこに特定の正規表現のチェックが100%ないので、面白い考えです。文字列型チェックのどこにでもこの単語が表示されます。ありがとう。 – awm

+1

また、Groovyの正規表現のサポートを、言語のファーストクラスの構造として調べることもできます。 Groovyは、構文上Javaと非常によく似ており、Javaとの互換性が高いJVM言語です。私はこれを言及します。なぜなら、いくつかのPerlハッカーの友人たちは、「Java」を強制するときにそれを誓うからです。 –

関連する問題