2 回答

TA贡献1809条经验 获得超8个赞
Matcher 类中没有这样的功能。但是,您可以通过以下方式实现它:
public String getPartialMatching(String pattern, String input) {
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(input);
int end = 0;
while(m.find()){
end = m.end();
}
if (m.hitEnd()) {
return input.substring(end);
} else {
return null;
}
}
首先,遍历字符串的所有匹配部分并跳过它们。例如:input = "aabbaa" m.hitEnd()将false不跳过而返回aabb。其次,验证字符串的左侧部分是否部分匹配。

TA贡献1797条经验 获得超6个赞
这可能很脏,但我们开始......
一旦你知道一些 string hitEnd
,做第二次处理:
从字符串中删除最后一个字符
使用原始正则表达式搜索
如果 It
matches
,那么你就结束了,你有字符串的一部分如果不是,则转到1并重复整个过程,直到匹配为止
如果测试字符串可能很长,则性能可能是一个问题。因此,不要尝试从最后到第一个位置,而是尝试搜索块。
例如,考虑一个 1,000 个字符的字符串:
测试 1000/2 个字符:1-500。对于这个例子,我们认为它匹配
测试前 500 个字符 + 500/2(1-750 个位置)。对于这个例子,我们认为它不匹配。所以我们知道仓位必须放在500到750之间
现在测试 1-625 ((750+500)/2)... 如果匹配,则位置必须存在于 625-750 之间。如果不匹配,它必须是从 500 到 625
...
添加回答
举报