个人技术分享

一、只匹配一个字符

注意:

(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)(?=...)、(?:...)、(?!...)是非捕获分组,不占用组号