正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
1 正则表达式语法
1.1 字符与字符类
1.1.1 特殊字符
\.^$?+*{}[]()|
以上特殊字符要想使用字面值,必须使用\进行转义
1.1.2 字符类
-
包含在[]中的一个或者多个字符被称为字符类,字符类在匹配时如果没有指定量词则只会匹配其中的一个。
-
字符类内可以指定范围,比如[a-zA-Z0-9]表示a到z,A到Z,0到9之间的任何一个字符
-
左方括号后跟随一个^,表示否定一个字符类,比如[^0-9]表示可以匹配一个任意非数字的字符。
-
字符类内部,除了\之外,其他特殊字符不再具备特殊意义,都表示字面值。^放在第一个位置表示否定,放在其他位置表示^本身,-放在中间表示范围,放在字符类中的第一个字符,则表示-本身。
-
字符类内部可以使用速记法,比如\d \s \w
1.1.3 速记法
-
. 可以匹配除换行符之外的任何字符,如果有re.DOTALL标志,则匹配任意字符包括换行
-
\d 匹配一个Unicode数字,如果带re.ASCII,则匹配0-9
-
\D 匹配Unicode非数字
-
\s 匹配Unicode空白,如果带有re.ASCII,则匹配\t\n\r\f\v中的一个
-
\S 匹配Unicode非空白
-
\w 匹配Unicode单词字符,如果带有re.ascii,则匹配[a-zA-Z0-9_]中的一个
-
\W 匹配Unicode非单子字符