正则表达式(Java)
一、初步认识
正则表达式是由一些特定的字符组成,代表一个规则,可以用来检验数据格式是否合法,也可以在一段文本中查找满足要求的内容。
如果使用代码检验数据是否正确:
public class RegexTest1 {public static void main(String[] args) {//需求:检验QQ号是否正确,全是数字不能以0开头,长度6-20System.out.println(checkQQ(null));System.out.println(checkQQ("3563gjhg88"));System.out.println(checkQQ("764765467"));}public static boolean checkQQ(String qq){//1.判断qq号码是否为nullif(qq == null || qq.startsWith("0") || qq.length()<6 || qq.length()>20){//String提供的一个startWith()方法return false;}//2.判断qq号码中全是数字// 比如qq号是2894qqi//遍历字符for (int i = 0; i < qq.length(); i++) {//根据索引提取当前位置处的字符char ch = qq.charAt(i);//需要判断ch记录的字符,如果不是数字,就不合法,底层比较编号if(ch < '0' || ch > '9'){return false;}}return true;}
}
使用正则表达式:

二、书写规则
String提供了一个匹配正则表达式的方法: 图片来源heimait

\\d才会当成\d使用

(?i)表示忽略大小写
三、应用案例
检验手机号码和邮箱是否正确:
import java.util.Scanner;public class Test2 {public static void main(String[] args) {
// checkPhone();checkMail();}public static void checkPhone(){while (true) {System.out.println("请输入电话号码");Scanner sc = new Scanner(System.in);String phone = sc.next();//17728365549 010-8818339 010293737if(phone.matches("(1[3-9]\\d{9})|(0\\d{2,7}-?[1,9]\\d{4,19})")){System.out.println("输入的号码没有问题");break;}else{System.out.println("输入的号码有问题,请重新输入号码");}}}public static void checkMail(){while (true) {System.out.println("请输入邮箱");Scanner sc = new Scanner(System.in);String mail = sc.next();//1241213254@qq.com 1422341@qq.com hekiii@iaii.com.cnif(mail.matches("\\w{2,}@\\w{2,20}(\\.\\w{2,10}){1,2}")){System.out.println("输入的邮箱没有问题");break;}else{System.out.println("输入的邮箱有问题,请重新输入邮箱");}}}}
查找信息:
1.定义查找规则 String regex = " .... "
2.把正则表达式封装成一个Pattern对象 Pattern pattern = Pattern.compile(regex)
3.通过pattern对象去获取查找内容的匹配器对象 Matcher matcher = pattern.matcher(data)
4.定义一个循环开始爬取信息
while (matcher.find()){String rs = matcher.group(); rs.sout}