我想找到每个元素中包含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
被推出,但我只得到一个空输出。
答案 0 :(得分:3)
你必须逃避反斜杠,即\\b
而不是\b
:
Pattern p = Pattern.compile("\\b[a-zA-Z]{3}\\b");
创建匹配器并使用find
和group
查找并显示下一个匹配的组:
for (String s : input) {
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group());
}
}