Find all words with 3 letters with regex

前端 未结 3 1115
有刺的猬
有刺的猬 2020-12-05 21:35

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


        
相关标签:
3条回答
  • 2020-12-05 22:07
    1. To match all words with 3 letters in a string, the pattern needs to be "\b[a-zA-Z]{3}\b"

    2. The next step would be to compile your pattern.

      Pattern pattern = Pattern.compile("\\b[a-zA-Z]{3}\\b");
      
    3. 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());
          }
      }
      
    4. 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());
              }
          }
      }
      
    0 讨论(0)
  • 2020-12-05 22:19

    you can use . instead of [a-zA-Z] if you want to match any character (also numbers):

     \b.{3}\b
    
    0 讨论(0)
  • 2020-12-05 22:26

    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.

    0 讨论(0)
提交回复
热议问题