I\'m trying to find all words with 3 letters in a string.
So in this list
cat monkey dog mouse
I only want
cat dog
To match all words with 3 letters in a string, the pattern needs to be "\b[a-zA-Z]{3}\b"
The next step would be to compile your pattern.
Pattern pattern = Pattern.compile("\\b[a-zA-Z]{3}\\b");
Use a matcher and use the find() and group() methods to print the occurrences
for (String word : sentence) {
Matcher matcher = pattern.matcher(word);
while(matcher.find()) {
System.out.println(matcher.group());
}
}
Your program should look something like -
public static void main(String[] args) {
List<String> sentence = new ArrayList<String>();
sentence.add("cat");
sentence.add("monkey");
sentence.add("dog");
sentence.add("mouse");
Pattern pattern = Pattern.compile("\\b[a-zA-Z]{3}\\b");
for (String word : sentence) {
Matcher matcher = pattern.matcher(word);
while(matcher.find()) {
System.out.println(matcher.group());
}
}
}
you can use .
instead of [a-zA-Z]
if you want to match any character (also numbers):
\b.{3}\b
You should use your match with word boundaries instead of anchors:
\b[a-zA-Z]{3}\b
RegEx Demo
When you use:
^[a-zA-Z]{3}$
It means you want to match a line with exact 3 letters.