正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
一、匹配单个字符
[0-9]:匹配任意数字
[a-z]:匹配任意小写字母
[A-Z]:匹配任意大写字母
[0-9a-zA-Z]:匹配所有数字和字母
\:转义
^:取反,如[^au]匹配不包含au的
\w:匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’
\W:匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]‘
\d:匹配一个数字字符。等价于 [0-9]
\D:匹配一个非数字字符。等价于 [^0-9]。
\s:匹配空白,包括空格,tab,换行
\b:匹配单词边界,如\bapple\b——>apple
^字符串开始,$字符串结束,^python$——>python
.:匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符, ‘[.\n]’ 的模式
?:指定一个字符或字符组,匹配它之前的字符0次或1次,如匹配 favorite和favourite这两种写法,favou?rite
二、匹配多个字符
{N}:它之前的字符出现N次,如匹配电话号码\d{4}-\d{7}
{M,N}:重复区间,M次到N次,正则是贪婪模式,优先匹配更多的,要用非贪婪模式{M,N}?
{M,}:开闭区间
+:匹配一个到无数个,{1,}
*:匹配0到无数个{0,}
.*?:爬虫经常会用到的一种匹配方法,表示非贪婪模式,匹配尽可能少的任意字符
\d+:也是爬虫常用的,匹配数字,如果数字用.*?匹配不到,可以用这个