Find all words with 3 letters with regex
14,720
Solution 1
You should use your match with word boundaries instead of anchors:
\b[a-zA-Z]{3}\b
When you use:
^[a-zA-Z]{3}$
It means you want to match a line with exact 3 letters.
Solution 2
you can use .
instead of [a-zA-Z]
if you want to match any character (also numbers):
\b.{3}\b
Solution 3
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()); } } }
Author by
Evgenij Reznik
Updated on June 14, 2022Comments
-
Evgenij Reznik almost 2 years
I'm trying to find all words with 3 letters in a string.
So in this listcat monkey dog mouse
I only want
cat dog
This is my expression:
^[a-zA-Z]{3}$
I tested it with different online regex tester, but none of them matched my expression.