java与正则相关的工具主要在java.util.regex包中;此包中主要有两个类:Pattern、Matcher。
一、Pattern
声明:public final class Pattern implements java.io.Serializable
含义:Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式。
特点:
1、Pattern类有final 修饰,可知他不能被子类继承。
2、此类的实例是不可变的,可供多个并发线程安全使用。
3、构造器是私有的,不能通过new创建Pattern对象。可通过Pattern调用静态方法compile返回Pattern实例。
Pattern p=Pattern.compile("\\w+");
p.pattern();//返回 \w+
//pattern() 返回正则表达式的字符串形式,其实就是返回Pattern.complile(String regex)的regex参数
常用方法:
1、public Matcher matcher(CharSequence input)
Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例.
Pattern类只能做一些简单的匹配操作,要想得到更强更便捷的正则匹配操作,那就需要将Pattern与Matcher一起合作.
Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持.
Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("22bb23");
m.pattern();//返回p 也就是返回该Matcher对象是由哪个Pattern对象的创建的
2、public static boolean matches(String regex,CharSequence input)
是一个静态方法,用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串.
3、Pattern.split(CharSequence input)
用于分隔字符串,并返回一个String[],我猜String.split(String regex)就是通过Pattern.split(CharSequence input)来实现的.
Pattern p=Pattern.compile("\\d+");
//\\d表示数字,+表示一个或多个
String[] str=p.split("我的QQ是:110120我的手机是:0371120我的邮箱是:aaa@aaa.com");
结果:
str[0]="我的QQ是:"
str[1]="我的手机是:"
str[2]="我的邮箱是:aaa@aaa.com"
二、Matcher :它依据Pattern对象做为匹配模式对字符串展开匹配检查。
1、Matcher类提供三个匹配操作方法,三个方法均返回boolean类型,当匹配到时返回true,没匹配到则返回false。
1.1 Matcher.matches() – 对整个字符串进行匹配,只有整个字符串都匹配了才返回true 。
Pattern p