正则表达式的部分匹配

时间:2013-07-21 14:37:16

标签: java regex

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

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

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

1 个答案:

答案 0 :(得分:6)

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

查看Matcher#hitEnd()方法:

  

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

     

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

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

  • 如果匹配,则有你的赢家
  • 如果不匹配,请查看hitEnd()
    • 如果是true,请构建更多字符串并再试一次
    • 如果它是false,则当前的字符串永远不会匹配,您可以删除它并重新开始