Python1.5版本之后,增加了re模块,re模块提供了正则表达式的模式,使得Python拥有了正则表达式的全部功能。
一.re的相关函数
re.match(pattern,String,flags=0):尝试从字符串的起始位置,匹配某一个模式。如果不是从起始位置匹配成功的话返回None。
参数:pattern:模式匹配的表达式
String:要匹配的字符串
flags:标志位,用来匹配正则表达式的匹配方式。分别有re.I(忽略大小写匹配)、re.L(本地化识别)、re.S(匹配包括换行符在内的所有字符)、re.M(多行匹配,影响^和$)、re.U(根据Unicode字符集解析字符,影响\w,\W,\b,\B)、re.X(以更灵活的方式理解正则表达式)
re.search(pattern,String,flags=0):扫描整个字符串,并且返回第一个成功的匹配。
参数:pattern:模式匹配的表达式
String:要匹配的字符串
flags:标志位,用来匹配正则表达式的匹配方式。分别有re.I(忽略大小写匹配)、re.L(本地化识别)、re.S(匹配包括换行符在内的所有字符)、re.M(多行匹配,影响^和$)、re.U(根据Unicode字符集解析字符,影响\w,\W,\b,\B)、re.X(以更灵活的方式理解正则表达式)
re.findall(pattern,String,flags=0):扫描整个字符串,并且返回结果列表。
参数:pattern:模式匹配的表达式
String:要匹配的字符串
flags:标志位,用来匹配正则表达式的匹配方式。分别有re.I(忽略大小写匹配)、re.L(本地化识别)、re.S(匹配包括换行符在内的所有字符)、re.M(多行匹配,影响^和$)、re.U(根据Unicode字符集解析字符,影响\w,\W,\b,\B)、re.X(以更灵活的方式理解正则表达式)
re.finditer(psttern,string,flags=0):与findall()类似,返回一个迭代器。
二、正则表达式的元字符
1. .(点):匹配除了换行符之外的任意字符。[0123456789]:[ ]是字符集合,表示匹配方括号所包含的任意一个字符。[a-z]、[A-Z]、[0-9]分别表示匹配任意小写字母、大写字母、数字.也可以用[0-9a-zA-Z]匹配任意字母和数字。[^hello](^脱字符)表示匹配除了hello这几个字母之外的所有字符。除此之外,还有\d匹配数字通[0-9]、\D匹配非数字字符,效果通[^0-9]、\w匹配字母数字和下划线、\W:匹配非字母数字和下划线\s:匹配任意的空白符(空格、换行、回车、换页、制表),同[\f\n\r\t]、\S:匹配任意的非空白符,同[^\f\n\r\t]。
三、锚字符
^:行首匹配
$:行尾匹配
print(re.search("li$","hell hell lli li"))
运行结果:<_sre.SRE_Match object; span=(14, 16), match='li'>
四、匹配多个字符
1.(xyz):匹配小括号里面的xyz,把(xyz)当成整体去匹配。
2.x?:匹配0个或者一个x
3.x*:匹配0个或者任意多个字符
4.x+:匹配至少一个x
5.x{n}:匹配确定的n个x(x是个非负整数)
6.x{n,}:匹配至少n个x(x是个非负整数)
7.x{n,m}:匹配至少n个,至多m个x