《精通正则表达式》笔记一

0x00 正则表达式基础

​ 正则表达式是一种处理文本的模式匹配语言,由普通字符元字符(有特殊意义的字符)组成,以下为元字符:

​ ^:匹配一个行开始位置,例如 /^abc/ 匹配以abc开头的文本

​ $:匹配一个行结束位置,例如 /^abc$/ 匹配以abc开头且结尾的文本

​ []:字符组,匹配其中字符之一,例如 /^[abc]d$/ 匹配ad、bd或cd。①在字符组中,可用连接符-表示范围,例如 /^[0-9]$/ 匹配数字0-9中任意一个,不在字符组中时-为普通字符。②在字符组中时^表示排除字符,例如 /[^0-9]/ 表示匹配除0-9意外的字符

​ .:匹配一个任意字符(除\r \n外),例如 /../ 匹配任意两个字符

:匹配左右两个子表达式中的任意一个,例如 /ab cd/ 匹配ab或者cd

​ \b:匹配一个单词边界,例如 /\bcat\b/ 匹配cat而不匹配ncat,因为nc之间不是单词间隔

​ *:匹配前面表达子式0次1次或多次,例如 /a*/ 匹配aa 、aaa或者空文本

​ +:匹配前面子式1次或者多次,例如 /a+/ 匹配a、aa

​ ?:匹配前面子式0次或者一次,例如 /a?b/ 匹配ab、b

​ {}: 匹配前面子式指定次数,{n}即n次 {n,}即n次以上{n,m}即n-m次之间

​ (): 构成子表达式及反向引用,所谓反向引用,即记住括号内所匹配的字符,以便得到匹配的串(总表达式匹配所得)的部分子串(该括号所匹配的子串),也可以在正则的后面引用这个字串,例如 /\b([a-zA-z]+)\b \1/ 匹配连续的两个相同单词

​ : 转义字符,如果我们要匹配的字符本身就是一个元字符,那么需要将其转义再使用,例如 /(/ 匹配(