正则表达式的部分匹配

我有一个逐步构建的字符串。 在构建字符串时,它通过正则表达式作为整体进行匹配,并且当找到匹配时,执行某个任务。

我的要求是:如果在字符串构建过程的中间发现无法找到完全匹配,则应重置字符串并重新启动构建过程。

例如,如果正则表达式是"mada12gaskar"并且当字符"3"被添加到现有字符串"mada1" ,应该清除该字符串,并且构建过程应该重新开始,因为"mada13"将永远不会与"mada12gaskar"匹配。 这可以通过Java regex API实现吗?

我想我找到了解决问题的可能方法。

看看Matcher#hitEnd()方法:

如果在此匹配器执行的最后一个匹配操作中搜索引擎命中输入结尾,则返回true。

当此方法返回true时,更多输入可能会更改上次搜索的结果。

现在,只需使用Matcher (通过Pattern实例获得)将regexp与尚未完全构造的String Matcher然后查看结果:

  • 如果它匹配,你有你的赢家
  • 如果它不匹配,请查看hitEnd()
    • 如果确实true ,请构建更多String并重试
    • 如果它为false ,则当前的String永远不会匹配,您可以将其删除并重新开始