有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

正则表达式在Java中查找包含3个字母的单词

我想找到每个元素中有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) 个答案

  1. # 1 楼答案

    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());
          }
      }