原文:http://hi.baidu.com/vip_qining/item/723d5f5117f462b3adc85752
Pattern、Matcher类
这两个类为正则的核心类,都定义在java.util包中
Pattern类的主要使用是进行正则规范(如之前的“[0-9]”就属于正则规范)的编写,而Matcher类主要是执行规范,验证一个字符串是否符合规范
以上的正则,如果要想驱动起来,则必须依靠Pattern类和Matcher类
Pattern主要是表示一个规则的意思,就是,正则表达式的规则需要在Pattern类中使用
Pattern类中如果想要取得Pattern类的事例,则必须调用compile()方法
Matcher类主要表示使用Pattern指定好的验证规则
static ( regex)
将给定的正则表达式编译到模式中。static ( regex, int flags)
将给定的正则表达式编译到具有给定标志的模式中。
( input)
创建匹配给定输入与此模式的匹配器。
[]( input, int limit)
围绕此模式的匹配拆分给定输入序列。
Matcher类
boolean()
尝试将整个区域与模式匹配。
( replacement)
替换模式与给定替换字符串相匹配的输入序列的每个子序列。
事例验证一个字符串是否是一个合法的日期格式
package com.qn;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegixDemo2 {
public static void main(String[] args) {
String str="1991-03-13";//定义一个字符串
String pat="\\d{4}-\\d{2}-\\d{2}";//指定好正则表达式
Pattern pattern=Pattern.compile(pat);//实例化Pattern类
Matcher m=pattern.matcher(str);//实例化Matcher类
if (m.matches()) {//进行验证匹配使用正则
System.out.println("日期格式合法");
}else{
System.out.println("日期格式不合法");
}
}
}
结果
Pattern类中也可以使用正则进行字符串的拆分
事例
package com.qn;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegixDemo3 {
public static void main(String[] args) {
//要求将里面的字符取出,也就是按照数字拆分
String str="123fdsa45f6a4df56sa";//定义一个字符串
String pat="指定好正则表达式
Pattern pattern=Pattern.compile(pat);//实例化Pattern类
String s[]=pattern.split(str);//执行拆分操作
for (int i = 0; i < s.length; i++) {
System.out.print(s[i]+"\t");
}
}
}
结果
还可以使用Matcher类中的字符串替换功能
范例:将字符串中的全部数字替换成“_”
package com.qn;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegixDemo6 {
public static void main(String[] args) {
//要求将里面的字符取出,也就是按照数字拆分
String str="123fdsa45f6a4df56sa";//定义一个字符串
String pat="指定好正则表达式
Pattern pattern=Pattern.compile(pat);//实例化Pattern类
Matcher mat=pattern.matcher(str);//实例化Matcher对象
String newStr=mat.replaceAll("_");
System.out.println(newStr);
}
}
在JDK1.4之后,java对正则进行了一些扩充,在String中开始直接支持正则的操作
String类中对正则的支持
事例
package com.qn;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegixDemo6 {
public static void main(String[] args) {
String str="a1b22c333d4444e55555".replaceAll("+", "_");
System.out.println("字符串替换操作:"+str);
}
}
结果
package com.qn;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegixDemo6 {
public static void main(String[] args) {
String str="a1b22c333d4444e55555".replaceAll("+", "_");
boolean temp="1991-03-13".matches("}");
String str1[]="a1b22c333d4444e55555".split("+");
System.out.println("字符串替换操作:"+str);
System.out.println("字符串日期验证:"+temp);
System.out.println("字符串的拆分:");
for (int i = 0; i < str1.length; i++) {
System.out.print(str1[i]+"\t");
}
}
}
结果
package com.qn;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegixDemo4 {
public static void main(String[] args) {
String info="qining:98|yanjie:100|weige:100";//定义一个字符串
//查分的形式按照
/*qining---98
* yanjie---100
* weige---100
* */
String str1[]=info.split("\\|");
System.out.println("字符串的拆分:");
for (int i = 0; i < str1.length; i++) {
System.out.println(str1[i]+"\t");
}
}
}