- 什么是正则表达式?
- 正则表达式是一个字符串,它的作用是描述另一个字符串的规则!
- 正则表达式的内容:
- 字符内容:
- abc: 直接写的内容是需要完全匹配的
- [abc]: 中括号表示是一个字符, 表示的内容可以是这个中括号中的一个
- [^abc]: 表示该字符不能是abc中的一个
- a|b: 表示该字符可以是a或b, 不能有中括号
- [a-z]: 表示该字符可以是在a-z范围内的一个字符, 不能反顺序写
- [0-9]: 表示该字符可以是在0-9范围内的一个字符
- [^a-z]: 表示该字符不能在a-z的范围内
- \d: 表示的是[0-9] 注意, 在双引号中必须写\\d
- \D: 表示的是[^0-9] , 表示内容不能是数字
- \w: 表示的是[A-Za-z0-9_]
- 字符内容:
-
- \W: 表示的是[^A-Za-z0-9_]
- 数量词
- {N}: 代表前面这个字符出现了N次
- {N,M}: 代表前面的内容可以出现N-M次
- {N, }: 代表前面的内容出现N次或以上
- *: 代表前面的内容出现0次以上
- +: 代表前面的内容出现1次以上
- ?: 代表前面的内容出现0次或者1次
- 分组: ((abc)(cd)(eefg))\\2\\1{2}
- 以小括号来进行分组: (abc)cd\\1 == abccdabc
- 有几个左小括号就有几个组
- 第几个左小括号,就是第几组
- 字符串中支持正则的方法:
- matches():判断字符串是否完全匹配正则的
- split(regex): 使用符合正则的内容去切割字符串
- replaceAll(regex,content): 把字符串中匹配正则的内容替换成指定的内容
- repalceFirst(): 把字符串中第一个符合正则的内容替换成指定的内容
- 支持正则的类
- Pattern: 正则对象, 用于跟字符串内容进行匹配
- 获取对象的方式: Pattern p = Pattern.compile(regex);
- Matcher: 匹配器对象, 用于查找匹配的字符串
- 获取对象的方式: Matcher m = p.matcher(字符串);
- 判断是否有符合正则的内容: boolean b = m.find()
- 获取符合正则的内容: String res = m.group();
- Pattern: 正则对象, 用于跟字符串内容进行匹配
- 手机号码正则校验: String regex = "1[1356789]\\d{9}";
- 代码示例:
String content = "我在上小学的时候已经会用电脑了,然后注册了我的第一个邮箱x iaoxuesheng@qq.com, 后来长大了,这个邮箱太low了,又注册了一个 gaozhongsheng@163.com, 后来这个邮箱被盗了,只能重新注册一 个,zhuangbi@phone.com,现在工作了, 有了一个新的邮 箱,nb@126.com";
String regex = "\\w+@\\w+(\\.[a-z]+)+";//邮箱的正则表达式
//把正则封装成对象
Pattern p = Pattern.compile(regex);
//使用正则对象去匹配字符串中的内容, 得到一个匹配器对象
Matcher m = p.matcher(content);
//判断是否有查找到符合正则的内容
while(m.find()) {
String res = m.group();//调用方法,获取查找到的内容
System.out.println(res);
}