3

我有一个增量构建的字符串。在构建字符串时,通过正则表达式将其作为一个整体进行匹配,当找到匹配项时,执行特定任务。

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

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

4

1 回答 1

6

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

Matcher#hitEnd()方法:

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

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

Matcher现在,只需使用 a (可通过实例获得)将正则表达式与尚未完全构造的字符串匹配Pattern并查看结果:

  • 如果匹配,你就有你的赢家
  • 如果不匹配,请查看hitEnd()
    • 如果是true,请构建更多字符串并重试
    • 如果是false,则当前字符串永远无法匹配,您可以删除它并重新开始
于 2013-07-21T16:15:44.397 回答