Java の優れたストリーミング正規表現パーサーを知っている人はいますか?
特に、XML 要素ストリームのコンテンツを監視し、コンテンツが特定の正規表現に一致するかどうか、および一致する場所を検出できるようにしたいと考えています。たとえば、MediaWiki 要素ストリームのコンテンツからの SAX "文字" コールバックを監視したいのですが、==([^=\n]+)== に一致する部分文字列がどこで発生するかを検出します。
秘訣は、コンテンツが不確定なサイズのチャンクで提供されることです。つまり、一致する部分文字列が複数のコールバックで壊れる可能性があります。
もちろん、単純な解決策は、単純にすべてのコールバックをバッファリングし、長い文字列に対して Java の組み込み正規表現エンジンを実行することです。残念ながら、それはあまりにも多くのメモリを消費します。
複雑さの次のステップは、正規表現を DFA に変換し、DFA が「受け入れ」状態になったことを検出することです。このプロセスを簡素化するJavaライブラリがあるかどうかを誰かが知っているかどうか疑問に思っていました。
私は Ragel を見てきました。ただし、コンパイル時に DFA を指定する必要があります。