1.正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。在Pyhon中有re模块提供正则表达式。
2.正则表达式基础
2.1 子模式
\w : 匹配任意字母、数字 或者 _
\d : 匹配数字
\s : 匹配空白符号(空格、Tab等)
. : 匹配任意字符
2.2 重复子模式
\d* : 表示任意个数字,包括0个
\w+ : 表示匹配至少一个字母、数字 或者 _
\w{3:8} : 表示匹配3-8之间个字母、数字 或者 _
2.3 “或” 运算 : |
(p|P)ython : 可以匹配python 也可以匹配Python
2.4 选择符 : ?
(http://)?(www.)?(admintony.com) :可以匹配http://admintony.com \ http://www.admintony.com \ www.admintony.com \ admintony.com (也就是:字符串中必须存在最后一个元组才能被匹配到)
2.5 字符集 : []
[a-zA-Z0-9\_] : 等价于\w
[0-9a-zA-Z\.\_] : 匹配数字、字母、. 和 _
2.6 开始符和结尾符 : ^ 、 $
^\d : 以数字开始
\w$ :以字母结尾
^[a-zA-Z][0-9a-zA-Z\_]* : 匹配python的合法变量
2.7 分组 : ()
2.7.1 捕获组
(^[0-9a-zA-Z]\w{5,17})@[0-9a-zA-Z]+\.\w+ : 匹配邮箱用户名
2.7.2 非捕获组
(^[0-9a-zA-Z]\w{5,17})@[0-9a-zA-Z]+\.(?:net|com|top|cn) :捕获指定后缀名的邮箱用户名
(?:\d+\.){3}\d+ : 匹配IP
3.Python的re模块
3.1 re模块的用法
1 | import re |
3.2 贪婪匹配和非贪婪匹配
贪婪模式下 :正则表达式想匹配最多的元素
非贪婪模式下:尽可能少的匹配
3.3 match 和 search的区别
match 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None
search 匹配整个字符串,直到找到一个匹配