正如标题所述,我想获取模式的一部分,该部分与输入部分匹配;例如:
模式:aabb 输入字符串:“ aa”
这时,我将使用Matcher类的hitEnd()方法来找出模式是否部分匹配,如此https://api.nfl.com/docs/identity/register/index.html所示,但我也想专门找出它“ aabb”的“ aa”匹配。 在Java中有什么方法可以做到这一点?
答案 0 :(得分:0)
这可能很脏,但是我们开始...
一旦您知道某个字符串hitEnd
,请进行第二次处理:
matches
,则说明您已经结束,并且拥有字符串的一部分如果测试字符串可能很长,则性能可能会成为问题。因此,请尝试搜索块而不是从最后到第一个位置。
例如,考虑一个1000个字符的字符串:
答案 1 :(得分:0)
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
。
其次,验证字符串的左部分是否部分匹配。