需要掌握的 正则表达式方法:
1 match()
2 search()
3 findall()
4 group()
5 groups()
6 compile()
python有专门用于正则表达式的模块叫re
python正则表达式的用法:
首先写出你需要匹配的模式
pattern=re.compile(r’hello’) r代表匹配字符,不写r 的话默认就是匹配字符
math=pattern.math(‘hello’) 如果无法匹配则返回None
if math: 如果math 匹配到为真,则输出匹配结果
print match.group( )
compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。如果开头没有找到match就会直接忽略其他的字符。直接返回None,就是没有找到
match 接收两个参数,第一个是正则表达式模式,第二个是需要用模式去匹配的字符。
re.search():接收两个参数,第一个正则表达式模式,第二个是需要匹配的字符。与match不同的是,search在整个内容中匹配。当匹配到了第一个之后就不会再往下进行匹配
我们也可以这样写
re.match()和re.search()如果匹配了都是返回正则表达式对象,如果想查看匹配结果使用
group查看
re.findall()#接收两个参数,第一个正则表达式模式,第二个是需要匹配的字符,findall从整个字符串里面查找所有匹配模式的字符,匹配结果以列表形式输出
re.compile()#将表达式也就是正则模式进行编译,编译后会生成一个正则对象,这个对象里面有一个findal函数可以用于匹配字符,这样做的好处是,如果需要多次使用某个模式,只需要一次编译,就可以多次使用。
m=re.match(‘hello’,’hello world’)
print m.group( ) 如果匹配到则返回结果,需要注意的是math只匹配起始的字符,比如你将hello world 写成 Hello world hello 起始的匹配不到后面的hello,也不去匹配,因为math只是匹配起始的字符
split() 能够根据匹配到的字符将该字符作为分隔符返回一个列表
比如
print re.split (‘\d+’,’one1two2three3four4’) :\d 表示任意数字
findall( ) 搜索所有匹配的字符以列表形式返回结果
sub( )是以正则表达式为基础的替换,功能类似于Linux sed
举一些简单的例子来说明其用法:
re.sub (‘[abc]’,’o’,’mark’)
‘mork’
re.sub(‘[abc]’,’o’,’rock’)
‘rook’
re.sub(‘[abc]’,’o’,’caps’)
‘oops’
就是将模式里面的字符与需要匹配的字符做比较,如果有相同的即替换成指定的字符
在正则表达式中,如果直接给出字符,就是精确匹配。用\d可以匹配一个数字,\w可以匹配一个字母或数字,所以:
‘00\d’可以匹配’007’,但无法匹配’00A’;
‘\d\d\d’可以匹配’010’;
‘\w\w\d’可以匹配’py3’;
.可以匹配任意字符,所以:
‘py.’可以匹配’pyc’、’pyo’、’py!’等等。
要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符:
来看一个复杂的例子:\d{3}\s+\d{3,8}
我们来从左到右解读一下:
\d{3}表示匹配3个数字,例如’010’;
\s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配’ ‘,’ ‘等;
\d{3,8}表示3-8个数字,例如’1234567’。
python正则表达式常用元字符:
\d 匹配任何十进制数;它相当于类 [0-9]。
\D 匹配任何非数字字符;它相当于类 [^0-9]。
\s 匹配任何空白字符;它相当于类 [ "t"n"r"f"v]。
\S 匹配任何非空白字符;它相当于类 [^ "t"n"r"f"v]。
\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]。
正则表达式常用的格式
字符:\d :表示一个数字 \w :可以匹配下划线等符号 . :表示任意单个字符
\t :tab键
次数:* :表示匹配大于等于0个 + :表示匹配大于等于1 ?:表示 0次或者1次 {m,n}:表示匹配m-n次的比如 3-5次