2019-09-16 14:01:33 3086浏览
今天千锋扣丁学堂Java培训老师给大家分享一篇关于Java正则表达式中Pattern类和Matcher类的详细介绍,首先我们要清楚指定为字符串的正则表达式必须首先被编译为pattern类的实例。因此如何更好的了解这两个类,是编程人员必须知道的。
	
	
1 ((A)(B(C))) 2 (A) 3 (B(C)) 4 (C)
Pattern p=Pattern.compile("\\w+"); 
p.pattern();//返回 \w+
Pattern p=Pattern.compile("\\d+"); 
String[] str=p.split("我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.com");
Pattern.matches("\\d+","2223");//返回true 
Pattern.matches("\\d+","2223aa");//返回false,需要匹配到所有字符串才能返回true,这里aa不能匹配到 
Pattern.matches("\\d+","22bb23");//返回false,需要匹配到所有字符串才能返回true,这里bb不能匹配到
Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("22bb23"); 
m.pattern();//返回p 也就是返回该Matcher对象是由哪个Pattern对象的创建的
Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("22bb23"); 
m.matches();//返回false,因为bb不能被\d+匹配,导致整个字符串匹配未成功. 
Matcher m2=p.matcher("2223"); 
m2.matches();//返回true,因为\d+匹配到了整个字符串
Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("22bb23"); 
m.lookingAt();//返回true,因为\d+匹配到了前面的22 
Matcher m2=p.matcher("aa2223"); 
m2.lookingAt();//返回false,因为\d+不能匹配前面的aa
Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("22bb23"); 
m.find();//返回true 
Matcher m2=p.matcher("aa2223"); 
m2.find();//返回true 
Matcher m3=p.matcher("aa2223bb"); 
m3.find();//返回true 
Matcher m4=p.matcher("aabb"); 
m4.find();//返回false
Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("aaa2223bb"); 
m.find();//匹配2223 
m.start();//返回3 
m.end();//返回7,返回的是2223后的索引号 
m.group();//返回2223 
 
Mathcer m2=m.matcher("2223bb"); 
m.lookingAt(); //匹配2223 
m.start(); //返回0,由于lookingAt()只能匹配前面的字符串,所以当使用lookingAt()匹配时,start()方法总是返回0 
m.end(); //返回4 
m.group(); //返回2223 
 
Matcher m3=m.matcher("2223bb"); 
m.matches(); //匹配整个字符串 
m.start(); //返回0,原因相信大家也清楚了 
m.end(); //返回6,原因相信大家也清楚了,因为matches()需要匹配所有字符串 
m.group(); //返回2223bb
Pattern p=Pattern.compile("([a-z]+)(\\d+)"); 
Matcher m=p.matcher("aaa2223bb"); 
m.find(); //匹配aaa2223 
m.groupCount(); //返回2,因为有2组 
m.start(1); //返回0 返回第一组匹配到的子字符串在字符串中的索引号 
m.start(2); //返回3 
m.end(1); //返回3 返回第一组匹配到的子字符串的最后一个字符在字符串中的索引位置. 
m.end(2); //返回7 
m.group(1); //返回aaa,返回第一组匹配到的子字符串 
m.group(2); //返回2223,返回第二组匹配到的子字符串
Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("我的QQ是:456456 我的电话是:0532214 我的邮箱是:aaa123@aaa.com"); 
while(m.find()) { 
  System.out.println(m.group()); 
}
456456 0532214 123
while(m.find()) { 
  System.out.println(m.group()); 
  System.out.print("start:"+m.start()); 
  System.out.println(" end:"+m.end()); 
}
456456 start:6 end:12 0532214 start:19 end:26 123 start:36 end:39
	
                          
	
【关注微信公众号获取更多学习资料】 【扫码进入JavaEE/微服务VIP免费公开课】