我正在尝试查找给定字符串和关键字组合的单词匹配数,如下所示:

public int matches(String keyword, String text){
 // ...
}


例:

给出以下调用:

System.out.println(matches("t", "Today is really great, isn't that GREAT?"));
System.out.println(matches("great", "Today is really great, isn't that GREAT?"));


结果应为:

0
2


到目前为止,我发现了这一点:Find a complete word in a string java

仅当给定关键字存在但不出现多少时才返回。此外,我不确定是否忽略大小写(这对我很重要)。

请记住,应该忽略子字符串!我只想找到完整的单词。



更新

我忘了提到我也希望通过空格分隔的关键字匹配。

例如。

matches("today is", "Today is really great, isn't that GREAT?")


应该返回1

最佳答案

使用带有单词边界的正则表达式。到目前为止,这是最简单的选择。

  int matches = 0;
  Matcher matcher = Pattern.compile("\\bgreat\\b", Pattern.CASE_INSENSITIVE).matcher(text);
  while (matcher.find()) matches++;


您的里程可能会因某些外语而有所不同。

07-26 09:34