如何使用 Java 正则表达式查找给定字母的单词

public class Homework {


  public static void main(String[] args) {


    String words[] = { "Abendessen", "Affe", "Affen", "aber", "anders", "Attacke", "arrangieren", "Art", "Asien",

            "Bund", "Arten", "Biene", "Abend", "baden", "suchen", "A1rten", "Abend-Essen" };


    Pattern pattern = Pattern.compile("[aA][a-z[n]+a-z]*");


    for (int i = 0; i < words.length; i++) {

      Matcher matcher = pattern.matcher(words[i]);

      if (matcher.find()) {

        System.out.println("OK: " + words[i]);

      }

    }

  }

}

过滤以 a 或 A 开头并包含 n 的单词。这些单词可能仅由字母组成,并且只有以第二个字母开头的小写字母。这些词应该匹配:Abendessen, Affen, anders, arrangieren, Asien, Arten, Abend


我已经粗心地尝试了上面的这个正则表达式,并且认为那也是错误的。


梦里花落0921
浏览 96回答 1
1回答

小怪兽爱吃肉

您当前的模式[aA][a-z[n]+a-z]*如下:字符类[aA],字符类[a-z[n]+。然后后面跟着a-z]*which 将匹配a,&nbsp;-,z并]重复 0+ 次。例如匹配Abendessena-z]你可能做的是用 a 或 A 开始匹配并重复 2 次[a-z]0+ 次并确保n中间有一个 a:\b[aA][a-z]*n[a-z]*\b解释\b单词边界[aA]匹配 a 或 A[a-z]*匹配 0+ 次 azn匹配n[a-z]*匹配 0+ 次 az\b单词边界您也可以使用锚点^并$断言字符串的开头和结尾而不是\b正则表达式演示
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java