1

正規表現クラスのブーストを使用して、ファイルを完全にメモリに読み込まずにファイルを検索する方法はありますか?

私は現在、1行ごとにファイルを読み取っています。これにより、正規表現を介した検索と比較して、解析が非常に複雑になります。ファイルが巨大になる可能性があり、多くのRAMを浪費したくないので、1行ごとに実行します。

使用したい正規表現はです。Notepad++の例で使用すると正常に機能します。

Block *\{([^\}]*?)MY_TOOL_Library([^\}]*?)\}
4

1 に答える 1

2

ブースト正規表現がこれを実装しているとは思わない。双方向イテレータが必要です。

正式には、「正規表現」(数学的な意味で) は 1 パスの解析を許可し、前方反復子で動作させることができます。しかし、boost は、他のほとんどの正規表現と同様に、キャプチャ (正式な定義の拡張) を実装しており、これが真のワンパス アルゴリズムを妨げている (または非常に困難にしている) と思います。

于 2012-08-10T07:55:19.750 に答える