正規表現には一種の問題があります。複数の (この場合は 1 つの) バッファーを 1 つの文字列としてカウントする必要があります。
ファイルをダウンロードして、特定の文字列、たとえば「foobar」を検索したいとします。ファイルサイズがどうなるかわかりませんし、html コード用に数メガバイトの巨大なバッファを割り当てたくありません。
つまり、私はこの小さなバッファーを持っているということです。64 バイトとしましょう。そのファイルのチャンクを書き、char配列が次のようになったとしましょう
.............foobar.............
すべて問題ないように見えますが、配列がこのようなものだった場合
.............................foo
そして、チャンクの他の書き込みでは、次のようになります
bar.............................
問題は自明です。正規表現は、個別のチェックで文字列を検出しません。一度にページを格納するために大きなバッファ サイズを割り当てることもできますが、それは大きな無駄です。
それで、私にはアイデアがあります-バッファを分割します。最初の書き込みでこれらのバッファを取得するとしましょう
............................foo
------------------------------- // this one is empty
次に、2回目の書き込みの後、これを取得します
............................foo
bar............................
さて、これらのバッファを 1 つとしてカウントする正規表現関数があれば、それは素晴らしいことです。RAMに多くのスペースを割り当てることなく、バッファを交互に繰り返し、必要な文字列を引き出すことができました。
それを行うC ++正規表現ライブラリはありますか? 何か案は?