我需要帮助。我正在编写一个方法,如果1954在字符串images/deal/129277/1954-bonus.jpg中,该方法将返回true。我可以使用string.contains,但它并不总是准确的。相反,如果1954年在正确的位置,我希望它返回true。在sourceKey下面是images/deal/129277/1954-bonus.jpg,在oldImageId下是1954

下面的代码不起作用。

private boolean keyMatches(String sourceKey, String oldImageId){
    Pattern pattern = Pattern.compile("(.*?)/(\\d+)/(\\d+)-(.*)");
    Matcher matcher = pattern.matcher(sourceKey);
    return oldImageId.equals(matcher.group(3));
}

最佳答案

好像您想要这样的东西,

String s = "images/deal/129277/1954-bonus.jpg";
String oldImageId = "1954";
Matcher m = Pattern.compile("(.*?)/(\\d+)/(\\d+)-(.*)").matcher(s);
if(m.find())
{
System.out.println(oldImageId.matches(m.group(3)));
}


输出:

true

09-05 09:49