概述
- 在讲正则表达式之前,让我们先完成一个小程序
- 需求:定义一个功能对QQ号进行校验。
- 要求:长度5~15. 只能是数字, 0不能开头
1 | //太复杂 |
1 | String qq = "12346578"; |
- 你能想象到,之前那么多行的程序,可以被短短几行代码表达出来吗?
- 正则表达式用于操作字符串数据,通过一些特定的符号来体现的。
- 所以我们为了掌握正则表达式,必须要学习一些符号。虽然简化了,但是阅读性差
规则
- 可以选择看API文档中 java.util.regex 目录下的Pattern类,或者下面的连接教程
常用功能
匹配
- 使用的就是String类中的matches方法
- 假设手机号只有13***,15***,18***这几个频段
1 | public static void functionDemo_1(){ |
切割
- 使用的就是String类中的split方法
- 需求:想要以连续的出现的任意相同字母为切割符
- 那么就是用”.“ 来表示任意字符,它后面的字符应该是跟他一样的,所以把 . 用小括号括起来
- 这就是组,它是字符串中第一组被包起来的,所以后面用 “\\1”表示它,+代表可以出现1或多次
1 | public static void functionDemo_2(){ |
- 那么 ( ( a ) ( b ( c ) ) ) 分别是几组那?
- 第一组: ( ( a ) ( b ( c ) ) )
- 第二组: \a
- 第三组: ( b ( c ) )
- 第四组: ( c )
替换
- 使用的就是String类中的 replaceAll() 方法
- 需求1:将连续出现的字符,替换为一个该字符
- 需求2:输入手机号,将第4-7位替换为*
1 | public static void functionDemo_3() { |
获取
- 将正则规则进行对象的封装
- 通过正则对象的matcher方法字符串相关联。获取要对字符串操作的匹配器对象Matcher
- 通过Matcher匹配器对象的方法对字符串进行操作
1 | Pattern p = Pattern.compile("a*b"); |
- 需求:获取字符串中的 三个字符的单词
1 | public static void functionDemo_4() { |
练习
- 1、治疗口吃:我我…我我…我我我爱…爱爱爱爱…爱爱..学学学学学…学学..习习习习.习
- 2、对IP地址排序。 192.168.10.34 127.0.0.1 3.3.3.3 105.70.11.55
- 3、对邮件地址校验。
1 | //练习1 |
1 | //练习2 |
1 | //练习3 |
练习(爬取邮箱)
1 | public class RegexTest2 { |