正则表达式的部分匹配
我有一个逐步构建的字符串。 在构建字符串时,它通过正则表达式作为整体进行匹配,并且当找到匹配时,执行某个任务。
我的要求是:如果在字符串构建过程的中间发现无法找到完全匹配,则应重置字符串并重新启动构建过程。
例如,如果正则表达式是"mada12gaskar"
并且当字符"3"
被添加到现有字符串"mada1"
,应该清除该字符串,并且构建过程应该重新开始,因为"mada13"
将永远不会与"mada12gaskar"
匹配。 这可以通过Java regex API实现吗?
我想我找到了解决问题的可能方法。
看看Matcher#hitEnd()
方法:
如果在此匹配器执行的最后一个匹配操作中搜索引擎命中输入结尾,则返回true。
当此方法返回true时,更多输入可能会更改上次搜索的结果。
现在,只需使用Matcher
(通过Pattern
实例获得)将regexp与尚未完全构造的String Matcher
然后查看结果:
- 如果它匹配,你有你的赢家
- 如果它不匹配,请查看
hitEnd()
:- 如果确实
true
,请构建更多String并重试 - 如果它为
false
,则当前的String永远不会匹配,您可以将其删除并重新开始
- 如果确实