Python 24天 正则表达式
正则表达式是对字符串操作的一种逻辑公式. 我们一般使用正则表达式对字符串进行匹配和过滤.
由普通字符和元字符组成
元字符:
1)字符组: 用[] 括起来的内容会被匹配 逐个匹配
2)简单元字符:
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白符
a|b 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了了字符组中字符的所有字符
3)量词
一次性匹配很多个字符
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
4)惰性匹配和贪婪匹配
在量词中 * + {} 都属于贪婪匹配 可以尽可能所得得到结果
str: 麻花藤昨天让英雄联盟关服了
reg: 昨天.* 匹配的是:昨天让英雄联盟关服了
.*? 表示惰性匹配 尽可能少的匹配
.*?x的特殊含义 找到下一个x为止.
5)分组
在正则中使用()分组
身份证匹配: ^[1-9]\d{14}(\d{2}[0-9X])?$ 新旧都可以
手机号 : ^(13|17|15|18)\d{9}
生日 : ^(1\d{3}|20\d{2})-(((01|0[3-9]|(10|11|12))-(1[0-9]|2[0-9]|3[0-1]))|(02-(1[0-9]|2[0-9])))
电话号: ^[0-9](\d{3}-[1-9]\d{6}|\d{2}-[1-9]\d{7})
网址 : ^((https|http|ftp|rtsp|mms)://)[^\s]+
地址 : \S+市\S+区\S+街道\S+小区\S+号楼\S+单元\S+号
IP : (2[0-5][0-5]|1[0-9][0-9]|[1-9]{2}|[1-9])\.(2[0-5][0-5]|1[0-9][0-9]|[1-9]{2}|[1-9])\.(2[0-5][0-5]|1[0-9][0-9]|[1-9]{2}|[1-9])\.(2[0-5][0-5]|1[0-9][0-9]|[1-9]{2}|[1-9])