1,什么是正则表达式
正则表达式是用来处理字符串的,其实正则表达式是非常复杂的,专门去系统学习需要花很长的时间,我们课程主要就是把常用的基础的给大家讲解。 正则表达式可以用来干什么: (1),匹配字符串:比如用户在数据框中输入了一个数据,我们要来检测这个数据是不是纯数字,是不是邮箱或者是不是电话号码。 (2),用来进行替换操作:比如我们有一篇文章,突然领导觉得里面暴露了很多用户的电话号码,不安全,要求我们把所有电话号码都替换成*号表示。 (3),提取信息,比如,我们在抓取到了很多商品的信息,我们要把这些商品信息的价格都提取出来保存。2,如果判断正则表达式是否匹配
String类提供了一个boolean matches(String regex): 判断该宇符串是否匹配指定的正则表达式。System.out.println("Hello49032432".matches("H\\w{4}\\d+")); //true
3, 匹配纯文本
严格匹配
System.out.println("China".matches("China")); //true
3, 点.匹配除换行符\n之外的任何单字符
System.out.println("A".matches("."));//true System.out.println("\n".matches("."));//false System.out.println("AA".matches("."));//false System.out.println("AA".matches(".A"));//true //要匹配.字符本身,请使用\. System.out.println(".".matches("\\."));//true
4,匹配字符出现了n次,n包含0次,1次和多次
格式: 字符{次数}//匹配出现n次 System.out.println("aaaaaaa".matches("a{7}"));//true System.out.println("aaaaaaa".matches(".{7}"));//true{7}表示前面的字符出现了7次,但是像一个问题,如果我们就是要匹配.或者是{
//匹配.{本身 System.out.println("aaa{{{...".matches("a{3}\\{{3}.{3}"));//true
5,匹配字符出现了n次以上
//匹配N次以上 System.out.println("aaaaa".matches("a{3,}"));//true
6,匹配出现了m到n次之间{m,n}
//匹配3(含)到5(含)次之间 System.out.println("aaa".matches("a{3,5}"));//true
7,匹配0到N次
星号:*
//匹配0次至多次 System.out.println("".matches("a*"));//true
8,匹配1次到多次
字符+
//匹配1到多次 System.out.println("a".matches("a+"));//true
9,匹配出现了0次或者1次?
问号:?
//匹配0或1次 System.out.println("".matches("a?")); //true System.out.println("a".matches("a?")); //true System.out.println("aa".matches("a?")); //false
10,匹配数字\d 非数字\D
//匹配数字 System.out.println("a34567".matches("a\\d+")); //匹配非数字 System.out.println("a34567".matches("\\D\\d+"));
11,匹配所有的空白字符,包括空格、制表符、回车符、换页符、换行符等\s
//匹配空白字符。包括空格、制表符、回车符、换页符、换行符等\s System.out.println(("abc \n012").matches("\\D{3}\\s+\\d{3}")); //true
12,匹配所有非空白字符\s
//匹配所有的非空白字符\S System.out.println(("abc \n012").matches("\\S+\\s+\\S+")); //true
13,匹配所有的单词字符,包括 有数字、26英文字母和下划线\w
//匹配任意数字字母下划线 System.out.println("123fdafadsHKJHK___".matches("\\w+"));//true System.out.println("fdsafds...~~~".matches("\\w+.+~+"));//true
14,匹配所有的非单词字符\W
//匹配非单词字符 System.out.println("%%%&&**((^^%$##@@!!---+++=== \n\n".matches("\\W+"));//true System.out.println("*人是中国人".matches("\\W+"));//true
15,匹配括号内任意一个字符[abcd] ;abcd为或者关系
//匹配[]内任意一个字符 System.out.println("a".matches("[abdc]"));//true
16, 范围匹配[a-z],[A-Z],[0-9]
//匹配范围单个字符 System.out.println("dfafjiewjhrlhjl4354356434ABC".matches("[a-z0-9A-Z]+")); //true
17,匹配不在范围单个字符[^a-z],[^0-9]
//匹配不在范围[^a-z],[^0-9] System.out.println("A".matches("[^a-z]")); //true
18,匹配同时计算
//匹配同时计算 System.out.println("a".matches("[a-z&&[def]]")); //false System.out.println("e".matches("[a-z&&[def]]")); //true
19,二选一运算| 或者
//或者关系 System.out.println("112312".matches("[a-z] |\\d+")); //true
20,边界匹配,以什么开头^,以什么结尾$
//边界匹配,以什么开头^,以什么结尾$ System.out.println("helloiuowjklkdshku49239784093280end".matches("^he[a-z0-9]+end$")); //true