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地址等
例如匹配手机号