正则表达式的编译表示形式。
指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
因此,典型的调用顺序是
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句
boolean b = Pattern.matches("a*b", "aaaaab");
package com.hfxt;
public class Test {
/**
* @param args
* 在java中正则表达式的使用。
* 正则表达式用于操作字符串。
*/
/**
* 1,demo,验证QQ号
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
String qq="123456";//QQ号
String rule="[1-9][0-9]{4,14}";//正则表达式的验证规则。
boolean result=qq.matches(rule);
if(result){
System.out.println("QQ号通过");
}else{
System.out.println("验证错误");
}
}
}
package com.hfxt;
public class Test2 {
/**
* @param args
* 正则表达式对字符串的常见操作。
* 验证电话号码
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
String tel="13855101007";//电话号码
String rule="1[358]\\d{9}";//正则表达式的规则,\\d表示对\d的转义。
boolean result=tel.matches(rule);
System.out.println(result);
/**
* 切割
*/
String str="zhangsan lisi wangwu";
String[] names=str.split(" +");//" +"表示在字符与字符之间可以存在无数的空格。提高程序的扩展性。
for (String name : names) {
System.out.println(name);
}
/**
* 替换
*/
String rep="18355101007";//将rep转换成183****1007的格式
String rule1="(\\d{3})\\d{4}(\\d{4})";//分别获取3,4,4段的数字。
rep=rep.replaceAll(rule1, "$1****$2");//分别获取第一组和第二组的数字,中间的数字使用*代替
System.out.println(rep);
}
}
小测试:
public static void main(String[] args) {
test1();
test2();
}
/**
* 治疗口吃:我我我我我来自合合合合合肥。
*/
public static void test1(){
String str="我我我我我来...自合合..合合合肥";
str=str.replaceAll("\\.+", "");//首先替换.
str=str.replaceAll("(.)\\1+", "$1");
System.out.println(str);
}
/**
* 对邮件的校验
*/
public static void test2(){
String mail="wang784160060@qq.com";
String rule="[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{1,3})+";
boolean result=mail.matches(rule);
System.out.println(result);
}