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

标签 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. 您必须转义反斜杠,即 \\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());
        }
    }
    

关于java - 在 Java 中查找包含 3 个字母的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33023575/

相关文章:

java - 尝试将 Java 编译器的合规级别设置为 5.0

java - 所有JPA规范查询之间的AND运算

ios - 正则表达式替换 Swift 中的 html 字符串

python - 是否需要一种更具声明性的方式来表达正则表达式? :)

regex - 在 Mac OS X 上使用命令 find 扩展 POSIX 实用程序?

javascript - 寻找 javascript getter/setter 等效项。不会产生警告

SQL : How to know if a set of values exist in database?

java - 其中哪一个是 Memento 设计模式的正确实现?

java - Java的HttpMethod中的recycle方法有什么替代方法?

C# 非通用 ISet 接口(interface)