有人知道一个好的Java流式正则表达式解析器吗?
特别是,我希望能够通过并检测内容是否与给定正则表达式匹配以及在何处匹配 XML 元素流的内容。例如,我想从 MediaWiki 元素流的内容中查看 SAX“字符”回调,但要检测匹配 ==([^=\n]+)== 的子字符串的位置。
诀窍是内容以不确定大小的块出现,这意味着匹配的子字符串可能会在多个回调中被破坏。
当然,简单的解决方案是简单地缓冲所有回调并在长字符串上运行 Java 的内置正则表达式引擎。不幸的是,这占用了太多内存。
复杂性的下一步是将正则表达式转换为 DFA 并检测 DFA 何时进入“接受”状态。我想知道是否有人知道是否有一些 Java 库可以简化这个过程。
我一直在看Ragel;但这需要在编译时指定 DFA。