共通 API regex(string, pattern) を提供せず、(パターンに基づいて) 有限状態マシンを構築できる C/C++ の正規表現ライブラリを探しています。
fsm = create_fsm();
add_pattern(fsm, "foo", hookFoo);
add_pattern(fsm, "bar", hookBar);
compile_fsm(fsm);
while ((c = fgetc(file) != EOF) {
next_char(fsm, c);
}
そして、パターンが一致した場合、hookFoo(match start, match end) が呼び出されますか? またはそれに似たもの、これは単なる概念です。長い、長い行で複数の正規表現を検索したいと思います。理想的には、後方検索のために逆方向にも入力できる場合。式は実行時にのみ認識されるため、Flex (または同様のパーサー ジェネレーター) はオプションではありません。
編集: lexertl を正しい答えとしてマークしましたが、それは私が探していたものではないようです。ストリームに戻る必要があります。過去を思い出すためにメモリを使用したくありません(最後の文字を思い出すなどの一定サイズ以外)。++iterator を呼び出すと、他のすべてのイテレータが無効になると想像してください。