正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。

re 模块使 Python 语言拥有全部的正则表达式功能。

compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。

本章节主要介绍Python中常用的正则表达式处理函数。

1 import re
2 
3 re.match #从开始位置开始匹配,如果开头没有则无
4 
5 re.search #搜索整个字符串
6 
7 re.findall #搜索整个字符串,返回一个list

举例:

1 r(raw)用在pattern之前,表示单引号中的字符串为原生字符,不会进行任何转义
2 
3 re.match(r'l','liuyan1').group()  #返回l
4 
5 re.match(r'y','liuyan1')  #返回None
6 
7 re.search(r'y','liuyan1').group() #返回y

正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:

 1 re.I    #使匹配对大小写不敏感
 2 
 3 re.L    #做本地化识别(locale-aware)匹配
 4 
 5 re.M    #多行匹配,影响 ^ 和 $
 6 
 7 re.S    #使 . 匹配包括换行在内的所有字符
 8 
 9 re.U    #根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
10 
11 re.X    #该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

 

 1 re.search(r'[a-z]+','liuyaN1234ab9').group() #返回'liuya'
 2 
 3 re.search(r'[a-z]+','liuyaN1234ab9', re.I).group() #返回'liuyaN',对大小写不敏感
 4 
 5 #如果匹配成功,则打印m,否则返回Null
 6 if re.match(r'[0-9]','a'):print 'm'
 7 
 8 #用空格分割
 9  re.split(r'\s+', 'a b   c')
10 
11 返回:['a', 'b', 'c', 'd']
12 #用逗号分隔
13 re.split(r'[\s\,]+', 'a,b, c  d')
14 返回:['a', 'b', 'c', 'd']
15 rr=re.match(r'[0-9]','3')
16 
17 rr.group(0)