Pattern类与Matcher方法的验证

来源:互联网 发布:球头铣刀怎么编程 编辑:程序博客网 时间:2024/06/05 03:21

1Pattern

  • static Pattern compile(String regex)将给定的正则表达式编译到模式中。
  • Matcher matcher(CharSequence input)创建匹配给定输入与此模式的匹配器。
  • boolean matches()尝试将整个区域与模式匹配。
  • String[] split(CharSequence input) 围绕此模式的匹配拆分给定输入序列。
 String regexPattern = "\\d+";static Pattern compile(String regex)  将给定的正则表达式编译到模式中。 regex正则    Pattern p = Pattern.compile(regexPattern);Matcher matcher(CharSequence input)  创建匹配给定输入与此模式的匹配器。 ,input匹配源    Matcher m = p.matcher("12312331-");boolean matches()    尝试将整个区域与模式匹配。     System.out.println("----------boolean matches()尝试将整个区域与模式匹配。 ------");    System.out.println("是否匹配:" + m.matches());String[] split(CharSequence input)    围绕此模式的匹配拆分给定输入序列。     System.out.println("------- //String[] split(CharSequence input)分割返回数组------");    String[] str=p.split("aaaaaa:22222bbbbbbb:3333333ccccccc:4444444");     for (String string : str) {        System.out.println(string);    }static boolean matches(String regex, CharSequence input)   编译给定正则表达式并尝试将给定输入与其匹配。 用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串.   System.out.println("----boolean matches()    尝试将整个区域与模式匹配。 ----------");    System.out.println(Pattern.matches("\\d+","2223"));//返回true     System.out.println(Pattern.matches("\\d+","2334dd"));//返回false,需要匹配到所有字符串才能返回true,这里dd不能匹配到     System.out.println(Pattern.matches("\\d+","we233"));//返回false,需要匹配到所有字符串才能返回true,这里we不能匹配到 输出:----------boolean matches()尝试将整个区域与模式匹配。 ------是否匹配:false------- //String[] split(CharSequence input)分割返回数组------aaaaaa:bbbbbbb:ccccccc:----boolean matches()    尝试将整个区域与模式匹配。 ----------truefalsefalse

2Matcher类

  • lookingAt() 尝试将从区域开头开始的输入序列与该模式匹配。此方法始终从区域的开头开始;与之不同的是,它不需要匹配整个区域。
  • public boolean find()尝试查找与该模式匹配的输入序列的下一个子序列。
    此方法从匹配器区域的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始。

  • start()返回第一个匹配字符的索引。

  • end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置. 返回最后匹配字符之后的偏移量。
  • group()返回匹配到的子字符串
 //lookingAt() 尝试将从区域开头开始的输入序列与该模式匹配。此方法始终从区域的开头开始;与之不同的是,它不需要匹配整个区域。     System.out.println("-------//lookingAt()------");    Matcher m1=p.matcher("23ssss");     System.out.println(m1.lookingAt());//返回true,因为\d+匹配到了前面的23     Matcher m2=p.matcher("sss23");     System.out.println(m2.lookingAt());//返回false,因为\d+不能匹配前面的sss    //public boolean find()尝试查找与该模式匹配的输入序列的下一个子序列。    // 此方法从匹配器区域的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始。     System.out.println("-------public boolean find()-----");    Matcher mm=p.matcher("22bb23");     System.out.println(mm.find());//返回true     Matcher mm2=p.matcher("aa2223");     System.out.println(mm2.find());//返回true     Matcher mm3=p.matcher("aa2223bb");     System.out.println(mm3.find());//返回true     Matcher mm4=p.matcher("aabb");     System.out.println(mm4.find());//返回false    // start()返回第一个匹配字符的索引。    // end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置. 返回最后匹配字符之后的偏移量。     //group()返回匹配到的子字符串     System.out.println("------find----start----end---group-");    Matcher mmm=p.matcher("aaaabbbb3333ddd");     System.out.println(mmm.find());//匹配3333 返回true    System.out.println(mmm.start());//返回8    System.out.println(mmm.end());//返回12,返回的是3333后的索引号     System.out.println(mmm.group());//返回3333     System.out.println("---");    Matcher mmm2=p.matcher("11bb");     System.out.println(mmm2.lookingAt());   //匹配11    System.out.println(mmm2.start());   //返回0,由于lookingAt()只能匹配前面的字符串,所以当使用lookingAt()匹配时,start()方法总是返回0     System.out.println(mmm2.end());   //返回2     System.out.println(mmm2.group());   //返回11    System.out.println("---");    Matcher mmm3=p.matcher("222344");     System.out.println(mmm3.matches());   //匹配整个字符串     System.out.println(mmm3.start());   //返回0    System.out.println(mmm3.end());   //返回6,原因相信大家也清楚了,因为matches()需要匹配所有字符串     System.out.println(mmm3.group());   //返回222344 输出:-------//lookingAt()------truefalse-------public boolean find()-----truetruetruefalse------find----start----end---group-true8123333---true0211---true06222344

3正则的高级使用

    Pattern p1=Pattern.compile("\\d+");     Matcher m1=p1.matcher("aaaaa:1111 bbbbb:22222 cccccc:ddddd:23d");     while(m1.find()) {          System.out.println(m1.group());     } 输出:11112222223
0 0
原创粉丝点击