格式:(匹配规则pattern,数据源data_source)*数据源必须是字符串
需要导入模块:import re
生成要匹配的正则对象:m = re.match(pattern,data_source)
常用方法:
re.match() '''按照格式从数据源开头进行匹配'''
re.findall() '''找到所有要匹配的字符串并返回列表'''
re.search() '''找到第一个要匹配的字符串并返回该字符串'''
re.split() '''将匹配到的字符串当作分割点分割指定的字符串并返回列表'''
re.sub() '''匹配并替换成指定字符串,返回替换后字符串。可指定要替换的个数'''
m.group() '''使用match()关键字匹配成功后获得被匹配到的字符串'''
pattern写法
^:匹配字符串的开头。
$:匹配字符串的末尾。
.:匹配除换行符外的任意字符,当re.DOTALL标记被指定时则可以匹配包括换行符的任意字符。
[]:用于表示一组字符串,单独列出。如[amk]匹配’a’,’m’或’k’。
[^]:不在[]中的字符。
*:匹配0个或多个表达式。
+:匹配1个或多个表达式。
?:匹配0个或一个由前面的正则表达式定义的片段,非贪婪方式。
{n}:精确匹配n个前面的表达式。
{n,m}:匹配n到m次由前面的正则表达式定义的片段,贪婪方式。
a|b:匹配a或b。
():匹配括号内的表达式,也表示一个组。
\w:匹配字母和数字。
\W:匹配数字。
\s:匹配任意空白字符,等价于[\t\n\r\f]。
\S:匹配任意空白字符。
\d:匹配任意数字,等价于[0-9]。
\D:匹配任意非数字。
\A:匹配字符串开始。
\z:匹配字符串结束。
\Z:匹配字符串结束,如果存在换行只匹配到还行前的结束字符串。
\B:匹配非单词边界。
\b:匹配一个单词边界。
常见正则实例:
'''匹配手机号'''
tel = '13813801380'
re.match('(1)([358]\d{9})',tel)
<_sre.SRE_Match object; span=(0, 11), match='13813801380'>
'''匹配IPv4地址'''
ipv4 = '192.168.254.250'
re.match('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}',ipv4)
<_sre.SRE_Match object; span=(0, 15), match='192.168.254.250'>
'''匹配E-mail地址'''
e_mail = 'dmmjy9@live.cn'
re.match('[0-9.a-z]{0,26}@[0-9.a-z]{0,20}.[0-9a-z]{0,8}',e_mail)
<_sre.SRE_Match object; span=(0, 14), match='dmmjy9@live.cn'>