1, 正则表达式本身是一个字符串
2, 正则表达式的用途是检查匹配目标字符串
示例:(注意[]中表示任意一个字符)
1, s[123456b] :匹配第一个字符为s第二个字符为123456b中任意一个
2, s[1-6b] : 。。。。。。。。。。。,第二个字符为1-6和b中任意一个
3, [0-9] == \d :\d代表任意一个数字
4, [^abc] :^取反,除了abc之外的所有字符中的一个,包含中文
5, [a-z&&[^bc]] :a-z中除了bc之外的一个字符,&&表示并且
一、 预定义字符集
. :任意一个字符
\d :任意一个数字字符,相当于[0-9]
\w :任意一个单词字符相当于[a-zA-Z0-9]
\s :任意一个空白字符,相当于[\t\n\xOB\f\r]
\D(大写) :非数字字符
\W(大写) :非单词字符
\S(大写) :非空白字符
二、 数量词
X? :表示0个或1个x
X* :表示0个或任意多个x
X+ :表示1个到任意多个x(大于等于1个x)
X{n} :表示n个x
X{ n, } :表示n个到任意多个x(大于等于n个x)
X{ n,m } :表示n个到m个x
三、 逻辑关系
| :或者关系
& :并且关系
四、 分组
() :用()进行分组
实例1,简单的正则表达式测试
package zhengze;
public class RegDemo01 {
public static void main(String[] args) {
/**
* 利用正则检验字符的整体是否符合规则
*/
//reg是正则
String reg="[0-9]{6}";
//code是被检查的字符串
String code = "100080";
//matches方法用于检查code的整体是否符合reg规则
boolean b = code.matches(reg);
System.out.println(b); //true
}
}
实例2,使用正则判断手机号输入是否规范
package zhengze;
import java.util.Scanner;
public class RegDemo2 {
public static void main(String[] args) {
/**
* 利用正则检验用户输入的是否是手机号
*/
String reg="(0086|\\+86)?\\s?1\\d{10}";
System.out.println("请输入您的手机号");
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
if(str.matches(reg)){
System.out.println("格式正确");
}else{
System.out.println("NO!");
}
}
}
在一个字符串中查找符合正则规则的字符串:
package zhengze;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Mather {
public static void main(String[] args) {
/**
* 在一个字符串中查找符合正则规则的字符串
*/
String ss = "我的电话号码是:13315125412,"
+ "你的电话号码是15733119876,"
+ "ta的电话是15383239845";
//将字符串放到StringBuilder中,这个对象有delete方法
StringBuilder sb = new StringBuilder();
sb.append(ss);
//正则规则
String regs = "(0086|\\+86)?\\s?1\\d{10}";
//创建Pattern对象,给定查找规则
Pattern pattern=Pattern.compile(regs);
//matcher在ss上执行查询,返回查询结果处理器
Matcher result=pattern.matcher(sb);
//在“查询处理器”查询获得结果
System.out.println("原字符串中有的手机号为:");
while(result.find()){ //只要查到里面有,就循环
int start = result.start();//获得结果集的开始位置
int end = result.end(); //获取及国际的结束位置
String s = result.group();//获取结果给字符串s保存
System.out.println(s);
sb.delete(start, end);
//将改变过的字符串重新给处理器
//matcher在sb上执行查询,返回查询结果处理器
result=pattern.matcher(sb);
}
System.out.println(ss);
}
}