如何在Java中返回与正则表达式匹配的字符串

4

这里有一种方法,每次匹配都会返回true/false。但我希望在匹配的情况下获取匹配的字符串,如果没有匹配则不返回任何内容。我可以使用if条件来检查是否为真或假。但我的具体问题是如何返回匹配的字符串?

private static boolean IsMatch(String s, String pattern) {
        try {
            Pattern patt = Pattern.compile(pattern);
            Matcher matcher = patt.matcher(s);
            return matcher.matches();
        } catch (RuntimeException e) {
        return false;
    }       
}

如果没有匹配,则返回 null。如果有匹配,则返回 String 值。 - Sotirios Delimanolis
你想要返回 true/false/String,怎么做?返回一个 String,可以是 null 或匹配的字符串。 - Braj
@SotiriosDelimanolis 返回 matcher; 不起作用,应该使用什么? - user3882418
@user3882418 请查看Matcher方法。有一个方法可以返回匹配结果。 - Sotirios Delimanolis
将方法的返回类型从 boolean 更改为 String。然后你就可以返回一个字符串而不是布尔值了。这是基础知识。 - Dioxin
显示剩余2条评论
1个回答

3
如何获得匹配的字符串?
将方法返回值更改为“String”,并在找到所需匹配组时返回该组。
Pattern patt = Pattern.compile(pattern);
Matcher matcher = patt.matcher(s);
if (matcher.find()) {
    return matcher.group(); // you can get it from desired index as well
} else {
    return null;
}

更新

使用Optional来获取匹配的值。在调用Optional.get()获取值之前,先检查Optional.isPresent()是否存在。


matcher.group()没有返回字符串。当我尝试使用if(matcher.find()){return matcher.group();}时,我看到错误"This method must return a result of type String"。 - user3882418
减一,因为未按照上次评论的要求工作。 - geotheory
@geotheory,我希望更新后的答案能够帮助其他人。 - Braj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接