Python:正则表达式-2

原文来自FishC,本文只是笔记而已。

Python通过re模块为正则表达式引擎提供一个接口,同时允许我们将正则表达式编译成模式对象,并用他们来进行匹配。

1)文中建议我们少用反斜杠,多使用原始字符串来表示正泽表达式(就是在字符串前边加上r);

2)创建模式对象:

import re
p=re.compile('[a-z]+')

+表示匹配一次或者多次。上面p有几个重要的方法:

    match()        判断一个正则表达式是否从开始处匹配一个字符串;

    search()        遍历,找到匹配的第一个位置

    findall()        遍历,找到所有位置,并以列表的形式返回

    finditer()        遍历,找到所有位置,并以迭代器的形式返回

3)空字符串无法匹配(会返回None);

m=p.match('fishc')

m作为匹配对象包含以下几个重要方法:

扫描二维码关注公众号,回复: 154786 查看本文章

    group()        返回匹配的字符串

    start()            返回匹配的开始位置

    end()            返回匹配的结束位置

    span()            返回一个元祖表示匹配位置(开始,结束)

4)实际使用中通常会把结果储存在一个局部变量中,如上面的m,并检查其返回值是否为None。

p=re.compile(...)
m=p.match('string goes here')
if m:
    print('Match found:',m.group))
else:
    print('No match')

5)有两个方法可以返回所有的匹配结果,findall,finditer:


显然,使用findall()需要事先创建一个列表,而finditer()则是将匹配对象作为一个迭代器返回的,如果返回的列表很大,建议使用finditer()版本。


猜你喜欢

转载自blog.csdn.net/huan_126/article/details/80209507