正则表达式的部分匹配

jrp*_*lla 3 java regex

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

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

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

Pet*_*ček 6

我想我找到了解决问题的方法.

Matcher#hitEnd()方法:

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

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

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

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

  • 帽子,我的答案删除了. (2认同)