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()    尝试将整个区域与模式匹配。 ----------
true
false
false

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()------
true
false
-------public boolean find()-----
true
true
true
false
------find----start----end---group-
true
8
12
3333
---
true
0
2
11
---
true
0
6
222344

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()); 
    } 
输出:
1111
22222
23
posted on 2017-04-16 13:18  2637282556  阅读(171)  评论(0编辑  收藏  举报