有没有一种方法或一个有效的库允许在Java中进行增量正则表达式匹配?
我的意思是,我希望有一个 OutputStream,我可以一次发送几个字节,并跟踪到目前为止与正则表达式的数据匹配。如果接收到一个字节,则肯定会导致此正则表达式not比赛,我希望直播能告诉我这一点。否则它应该让我了解当前的最佳匹配(如果有)。
我意识到这可能是一个极其困难且定义不明确的问题,因为人们可以想象正则表达式可以匹配整个表达式或其任何部分,或者在流关闭之前无法做出决定。即使像 .* 这样微不足道的东西也可以匹配 H、He、Hel、Hell、Hello 等。在这种情况下,我希望流说:“是的,如果现在结束,这个表达式可以匹配,这是它将返回的组。”
但是如果 Pattern 在内部逐步遍历它逐个字符匹配的字符串,它可能不会那么难?
增加的通过计算可以很好地实现匹配有限状态自动机对应于正则表达式,并在处理输入的字符时对其执行状态转换。大多数词法分析器都是这样工作的。这种方法不适用于groups, 尽管。
因此,也许您可以将其分为两部分:使用一个匹配器来确定是否存在任何匹配,或者将来是否存在匹配的机会。您可以使用它在每个输入字符后给您一个快速回复。一旦获得完整的匹配,您就可以执行回溯和分组正则表达式引擎来识别匹配组。在某些情况下,将分组内容编码到自动机中也可能是可行的,但我想不出实现此目的的通用方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)