【发布时间】:2015-10-08 18:43:17
【问题描述】:
我想查找每个元素中包含 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);
}
}
在我的情况下,我希望输出 cat 和 dog,但我只得到一个空输出。
【问题讨论】:
-
反斜杠必须在 Java 字符串模式中转义(使用另一个反斜杠)。
\b=>\\b -
@CasimiretHippolyte 好的,在这种情况下,我只得到
dog,但仍然缺少cat。 -
是的,因为猫更聪明。或者你没有使用好的方法(
matches而不是find)。 -
cat 123是包含两个单词的字符串,因此它与您的正则表达式不匹配。如果你想找到cat...,你可能应该阅读 Java 正则表达式教程 -
因为你打印了整个字符串。