5、Pattern类和Matcher类:
1)Pattern类主要是表示一个规则的意思:正则表达式的规则要在Pattern类中使用。
2)Matcher类主要表示使用Pattern类指定好的验证规则。
public static Pattern compile(Stringregex)
将给定的正则表达式编译到模式中。
public static Pattern compile(Stringregex intflags)
将给定的正则表达式编译到具有给定标志的模式中。
public Matcher matcher(CharSequenceinput)
创建匹配给定输入与此模式的匹配器。
public String[] split(CharSequenceinput)
围绕此模式的匹配拆分给定输入序列。
此方法的工作方式类似于使用给定的输入序列和限制参数零调用两参数 (java.lang.CharSequence, int) split} 方法。因此,得到的数组中不包括尾部空字符串。
例1:验证日期 1983-04-22
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDemo03 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String str = "1983-04-22";//定义日期字符串 String pat = "\\d{4}-\\d{2}-\\d{2}";//定义正则表达式 Pattern p = Pattern.compile(pat);//实例化Pattern类 Matcher m = p.matcher(str);//实例化Matcher类 if(m.matches()){ System.out.println("日期格式正确!"); }else{ System.out.println("日期格式不正确!"); } } }
运行截图:
例二:将字符串进行拆分:
public String[] split(CharSequenceinput)
围绕此模式的匹配拆分给定输入序列。
此方法的工作方式类似于使用给定的输入序列和限制参数零调用两参数 (java.lang.CharSequence, int) split} 方法。因此,得到的数组中不包括尾部空字符串。
import java.util.regex.Pattern; public class RegexDemo04 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //将字符串按数字进行拆分 String str = "A1B22C35255D4444E8460F630636";//定义字符串 String pat = "\\d+";//定义正则 Pattern p = Pattern.compile(pat);//实例化Pattern类 String s[] = p.split(str);//按数字拆分字符串 for(int i=0;i<s.length;i++){ System.out.print(s[i]+"\t"); } } }运行截图:
例子3:字符串替换
public String replaceAll(Stringreplacement)
替换模式与给定替换字符串相匹配的输入序列的每个子序列。
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDemo04 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //将字符串中的数字进行替换为下划线 String str = "A1B22C35255D4444E8460F630636";//定义字符串 String pat = "\\d+";//定义正则 Pattern p = Pattern.compile(pat);//实例化Pattern类 Matcher m = p.matcher(str); String newStr = m.replaceAll("_"); System.out.println(newStr); } }
运行截图: