-
目录
-
1.正则表达式-字符类
- [abc]:代表a或者b,或者c字符中的一个。
- [^abc]:代表除a,b,c以外的任何字符。
- [a-z]:代表a-z的所有小写字符中的一个。
- [A-Z]:代表A-Z的所有大写字符中的一个。
- [0-9]:代表0-9之间的某一个数字字符。
- [a-zA-Z0-9]:代表a-z或者A-Z或者0-9之间的任意一个字符。
- [a-dm-p]:a 到 d 或 m 到 p之间的任意一个字符。
- 注:用str.matches("*****")匹配
-
2.正则表达式-逻辑运算符
- &&:并且
- | :或者
- \ :转义字符
-
3.正则表达式-预定义字符
- "." : 匹配任何字符。
- "\d":任何数字[0-9]的简写;
- "\D":任何非数字[^0-9]的简写;
- "\s": 空白字符:[ \t\n\x0B\f\r] 的简写
- "\S": 非空白字符:[^\s] 的简写
- "\w":单词字符:[a-zA-Z_0-9]的简写
- "\W":非单词字符:[^\w]
-
4.正则表达式-数量词
- X? : 0次或1次
- X* : 0次到多次
- X+ : 1次或多次
- X{n} : 恰好n次
- X{n,} : 至少n次
- X{n,m}: n到m次(n和m都是包含的)
-
5.Pattern和Matcher
- Pattern:表示正则表达式
- Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取。在大串中去找符合匹配规则的子串。
- 使用:
- //1.获取正则表达式的对象(p是一种规则)
- Pattern p = Pattern.compile("Java\\d{0,2}");
- //2.获取文本匹配器的对象
- //拿着m去读取str(一段字符串),找符合p规则的子串
- Matcher m = p.matcher(str);
- //3.利用循环获取,如果有,返回true。在底层记录子串的起始索引和结束索引+1
- while (m.find()) {
- String s = m.group(); //方法底层会根据find方法记录的索引进行字符串的截取
- System.out.println(s); // substring(起始索引,结束索引);包头不包尾,所以要结束索引+1
- } //第二次调用group方法的时候,会根据find方法记录的索引再次截取子串
-
6.贪婪爬取和非贪婪爬取
- 贪婪爬取:在爬取数据的时候尽可能的多获取数据
- 非贪婪爬取:在爬取数据的时候尽可能的少获取数据
- 只写+和*表示贪婪匹配
- 在+和后面加问号表示非贪婪爬取
- +? 非贪婪匹配
- *? 非贪婪匹配
- 举例:
- 如果获取数据:ab+
- 贪婪爬取获取结果:abbbbbbbbbbbb
- 非贪婪爬取获取结果:ab
-
7.String类中使用正则表达式
- 7.1String类中的split()方法原型:
- public String[] split(String regex)
- //参数regex表示正则表达式。可以将当前字符串中匹配regex正则表达式的符号作为"分隔符"来切割字符串。
- 7.2String类的replaceAll方法原型
- public String replaceAll(String regex,String newStr)
- //参数regex表示一个正则表达式。可以将当前字符串中匹配regex正则表达式的字符串替换为newStr。
- 7.1String类中的split()方法原型:
-
8.正则表达式-捕获分组
- 只看左括号,不看有括号,按照左括号的顺序,从左往右,依次为第一组,第二组,第三组等等
- \\组号:表示把第X组的内容再出来用一次
String regex2 = "(.+).+\1";
-
9.忽略大小写的写法
- //(?i) :表示忽略后面数据的大小写
- //忽略abc的大小写
- String regex = "(?i)abc";
- //a需要一模一样,忽略bc的大小写
- String regex = "a(?i)bc";
- //ac需要一模一样,忽略b的大小写
- String regex = "a((?i)b)c";
-
10.非捕获分组
- 非捕获分组:分组之后不需要再用本组数据,仅仅是把数据括起来。
- 特点:不占用组号
- (?:) (?=) (?!)都是非捕获分组//更多的使用第一个
//String regex1 ="[1-9]\d{16}(?:\d|x|x)\1";
\\1报错原因:(?:)就是非捕获分组,此时是不占用组号的。
5.Java正则表达式(上篇)
最新推荐文章于 2024-09-27 00:45:01 发布