概念:
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式。 Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。
以上是网上的一段话,具体参考:
说实在的刚开始看我觉的不知所云,晦涩难懂。先简单理解吧,pattern就是一个模式,Matcher就是一个检查匹配的机器,这两个都是名词。
1.Pattern类的使用
这两个类的构造方法是private的,不能直接New实例化,那肯定是调用某个方法获得实例化后的对象咯。

Pattern p=Pattern.compile("\\d+");简单工厂方法创建一个正则表达式.

根据正则表达式对字符串进行分割

String[] str=p.split("我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.com");
//结果:str[0]="我的QQ是:" str[1]="我的电话是:" str[2]="我的邮箱是:aaa@aaa.com"

判断字符串是否匹配这个正则表达式,第一个参数是正则表达式,第二个参数是字符串。

Pattern.matches("\\d+","2223");
//返回true 
Pattern.matches("\\d+","2223aa");
//返回false,需要匹配到所有字符串才能返回true,这里aa不能匹配

2.Matcher类的使用
Matcher类的构造方法也是private的所以也是通过调用方法来创建的

Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("22bb23"); 
m.pattern();
//返回p 也就是返回该Matcher对象是由哪个Pattern对象的创建的

Matcher.matches()/ Matcher.lookingAt()/ Matcher.find()
Matcher.matches()是必须全部匹配;
Matcher.lookingAt()匹配的字符必须要在字符串的最前面
Matcher.find()匹配的字符可以在字符串的任意的地方。

Mathcer.start()/ Matcher.end()/ Matcher.group()
这三个方法必须是在有字符匹配到的条件下才能够调用,否则会报错。
start()返回匹配到的子字符串在字符串中的索引位置.
end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.
group()返回匹配到的子字符串

Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("aaa2223bb"); 
m.find();//匹配2223 
m.start();//返回3 
m.end();//返回7,返回的是2223后的索引号 
m.group();//返回2223

start(),end(),group()均有一个重载方法它们是start(int i),end(int i),group(int i)专用于分组操作,Mathcer类还有一个groupCount()用于返回有多少组

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,返回第二组匹配到的子字符串