一、只匹配一个字符
注意:
(1)"9"无法匹配表达式"\d",因为'\'是转义字符,只有字符'\d'可以匹配"\d"(理解层面的解释,实际上并不存在字符'\d',所以"\d"本身就是非法字符串)。若要匹配"9",需要将表达式改为"\\d"。
(2)除了下方的表达式,还可直接指定匹配某个字符,如"ab9"可以匹配表达式"ab\\d"。
(3)(?i):可忽略该符号后面所有字符的大小写,可以用小括号(...)指定忽略大小写的字符
(4)Java(?=8|11|17):?表前面的Java,=表后面跟的数据,匹配到子串后只获取前面的Java
(5)Java(?:8|11|17):?表前面的Java,:表后面跟的数据而且匹配到子串后获取完整子串
(6)Java(?!8|11|17):?表前面的Java,!表匹配的Java后面不能跟随8或11或17
二、表数量的符号,可以匹配多个字符
注意:
(1)+、*默认贪婪爬取
(2)在+、*后加?为非贪婪爬取
三、逻辑符
注意:
(1)每个()分组有自己的组号,以左括号为基准,最左边的"("是第1组
(2)正则表达式内"\1"表示匹配的内容需和第一组一模一样,如"abab"、"ab"都可被"(ab)\\1*"匹配
(3)正则表达式外用"$1"代表正则表达式内的第1组
(4)(?=...)、(?:...)、(?!...)是非捕获分组,不占用组号