re
Python的内置库——正则表达式
正则表达式是用来 处理字符串 的,重在处理 规则
常用正则
- 年份匹配:
^((19|20)\d{2})$ - 手机号码:
^1[3456789]\d{9}$ - E-mail地址:
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ - 网址URL:
http://(/[\w-]+\.)+[\w-]+(/[\w-./?%&=])
Note
re.findall(goal, source)
匹配成功: 返回一个列表,列表中有goal的字符串,找到n次就有n个.
匹配失败: 返回一个空列表
预定义字符¶
\d、\D、\s、\S、\w、\W
\d:匹配所有 数字,0~9\w:匹配包含下划线 字符[a-z|A-Z|0-9|_]\s:匹配 空白符、制表符、换行符[\n \t]
\D:匹配所有 非数字,^[0-9]\W:匹配 非正常字符^[a-z|A-Z|0-9|_]\S:匹配 非空白符、制表符、换行符^[\n \t]
.:除了换行符之外所有字符
元字符¶
[]、{n}、^、-
[]:匹配一个字符,括号内是 或者 的关系^:取反 (和这些元字符或\d这些预定义字符一起用才是取反,否则和$一起做位置匹配)-:区间():分组,匹配括号内的内容,不要括号两边的内容
重复匹配¶
重复匹配默认是贪婪匹配的,会尽量匹配多位
{n}:表示前面的字符重复n次才被匹配成功。a{3}就匹配出:aaa{n,m}:表示前面的字符至少出现n次,至多出现m次,逗号左右不能有空格,贪婪匹配{n,m}?:表示前面的字符至少出现n次,至多出现m次,逗号左右不能有空格,非 贪婪匹配{n,}:表示前面的字符至少出现n次,至多出现无穷次
?:相当于{0,1},表示前面的字符出现0次或1次+:相当于{1,},表示前面的字符至少出现1次*:相当于{0,},表示前面的字符出现0次或无穷次,贪婪匹配+?:相当于{1,}?、{1},表示前面的字符至少出现1次,非贪婪匹配*?:相当于{0,}?、{0},表示前面的字符至少出现0次,非贪婪匹配
\:转义符,在需要匹配上面?+*几个符号的时候需要加上斜杠\
贪婪和非贪¶
反向引用¶
位置匹配¶
^:开头$:结尾
这两个经常一起使用,用来限定位置 常用于检验手机号、用户名、email地址等
例如匹配手机号