これはあなたの質問ですが、
正規表現が一致するかどうか。そしてその表現は、可変量の入力と一致します。したがって、それは直接決定することはできません。
ただし、重複の可能性があると考えられる場合は、スマートバッファリングスキームを使用して同じことを達成することは可能です。
これを実行する方法はたくさんあります。
アサーションで一致しないものすべてを一致させることですが、最初に一致するものが見つかるまで(一致するものではありません)一致するものは一致しません。 これはバッファから簡単に投げ捨てることができます。あなたが求めるマッチを得たら、そのデータとデータのバッファをクリアしてください。
例:/(<function.*?>)|([^<]*)/
バッファから捨てる/クリアする部分は、グループ2のキャプチャバッファにあります。
もう1つの方法は、有限の長さの文字列を一致させる場合です。 のバッファと一致しない場合は、バッファの先頭からバッファの最後からあなたが探している有限の文字列。
例:バッファのサイズは64kです。長さ10の文字列を検索しています。バッファーに文字列が見つかりませんでした。最後の10バイトを保持して(64k - 10)バイトを安全にクリアすることができます。次に、バッファの最後に(64k-10)バイトを追加します。もちろん、サイズが10バイトのバッファが必要です。常に1文字を削除/追加するだけですが、より大きなバッファを使用する方が効率的です。しきい値を使用してより多くのデータをリロードすることができます。
簡単に縮小/拡大するバッファを作成できる場合は、さらに多くのバッファリングオプションを使用できます。
出典
2011-01-21 19:49:15
sln