在Java中查找包含3个字母的单词

时间:2015-10-08 18:43:17

标签: java regex set hashset

我想找到每个元素中包含3个字母的所有单词。

this post中,我找到了正确的正则表达式,但我知道我正在尝试使用Java。

Set<String> input = new HashSet<String>();
input.add("cat 123");
input.add("monkey");
input.add("dog");

Pattern p = Pattern.compile("\b[a-zA-Z]{3}\b");

for (String s : input) {
    if (p.matcher(s).matches()) {
        System.out.println(s);
    }
}

在我的情况下,我希望catdog被推出,但我只得到一个空输出。

1 个答案:

答案 0 :(得分:3)

  1. 你必须逃避反斜杠,即\\b而不是\b

    Pattern p = Pattern.compile("\\b[a-zA-Z]{3}\\b");
    
  2. 创建匹配器并使用findgroup查找并显示下一个匹配的组:

    for (String s : input) {
        Matcher m = p.matcher(s);
        while (m.find()) {
            System.out.println(m.group());
        }
    }