6

私は.match(Regex)Javaプログラムでメソッドを使い始めましたが、今のところ文字列を使用しています(String regexString = new String("[^a-zA-Z0-9][^a-zA-Z0-9]*");例として、これまでのところ)。ただし、実際の正規表現を使用できることはわかっています(Regex pattern = new Regex() & the Pattern classその後、何らかの方法でコンパイルします(?))。

javaで正規表現を単なる文字列ではなくクラスとして使用する利点はありますか? 私はスクリプティングを bash することにかなり慣れており、正規表現は最も大雑把な意味では単なる「文字列」であり、別のクラスの機能や必要性がないため、ここにある場所を見つけるのに苦労しています。

4

2 に答える 2

7

私はあなたが最も単純で明確だと思うことをします。

APatternは、正規表現のパフォーマンスが重要な場合によく使用されます。アプリケーションのプロファイルを作成しておらず、問題があることがわかっている場合は、プレーンを使用しても問題ないString可能性があります。

于 2012-10-03T08:16:01.627 に答える
0

マッチングの目的で使用しようとしている正規表現は、指定したパターンに一致するすべてのテキストを受け入れる有限状態マシンで変換する必要があります。

したがって、たとえば(new String( "")。split( "")式で正規表現を使用するたびに、パターンがバックグラウンドで構築されます。つまり、有限状態マシンは、次の文字のシーケンスを受け取ります。文字列と入力を一致させようとします。

頻繁に使用する正規表現があり、速度が非常に重要な場合は、有限状態マシンを維持し、毎回構築しないことが重要なスピードアップです。これを行うには、異なる出力文字列の一致の連続する呼び出しの間にパターンオブジェクトを保存します。

以下は、もう少し洞察を提供するはずです:http: //en.wikipedia.org/wiki/Finite-state_machine

于 2012-10-03T08:49:33.903 に答える