python正则表达式(re模块)

python中正则匹配一般使用re模块,今天来讲讲常用的。

很多方法中都有一个参数flags,下面来看看这个参数有哪些可选值:

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

1. search

search(pattern, string, flags=0)
函数会在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None。

origin_str = 'hifaijewh2374y328hdu8af_=-=[]'
t1 = re.search('\d', origin_str)
t2 = re.search('\d[5]', origin_str)
print t1.group(), t2

>>> 2 None

2. compile

compile(pattern, flags=0)
编译正则表达式模式,返回一个对象的模式。(可以把那些常用的正则表达式编译成正则表达式对象,这样可以提高一点效率。)

origin_str = 'hhhaijewh2374y328hdu8af_=-=[]'
obj = re.compile('\d+')
res = re.search(obj, origin_str)
print res.group()

>>> 2374

3. match

match(pattern, string, flags=0)
从第一个字符开始匹配,匹配成功返回,开头未匹配到则返回None。是不完全匹配,即便后面有符合条件的字符串也不会继续匹配。

origin_str = 'hifaijewh2374y328hdu8af_=-=[]'
t1 = re.match('h', origin_str)
t2 = re.match('H', origin_str)
t3 = re.match('H', origin_str, re.I)      # 忽略大小写
print t1.group(), t2, t3.group()

>>> h None h

4. findall

findall(pattern, string, flags=0)
遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。

origin_str = 'hifaijewh2374y328hdu8af_=-=[]'
t1 = re.findall('\d+', origin_str)
print t1

>>> ['2374', '328', '8']

5. finditer

finditer(pattern, string, flags=0)
按顺序找到 re 匹配的所有子串(和findall匹配的字串一样),并把它们作为一个迭代器返回。

origin_str = 'hhhhaijewh2374y328hdu8af_=-=[]'
t1 = re.finditer('hh', origin_str)
print t1
for i in t1:
    print i.group(),

>>> hh hh

6. split

split(pattern, string, maxsplit=0, flags=0)
按照能够匹配的子串将string分割后返回列表。

origin_str = 'hhhaijewh2374y328hdu8af_=-=[]'
t1 = re.split('\d+', origin_str)
print t1

>>> ['hhhaijewh', 'y', 'hdu', 'af_=-=[]']

7. sub

sub(pattern, repl, string, count=0, flags=0)
使用re替换string中每一个匹配的子串后返回替换后的字符串。

origin_str = 'hhhaijewh2374y328hdu8af_=-=[]'
t1 = re.sub('\d', '*', origin_str)
print t1

>>> hhhaijewh****y***hdu*af_=-=[]

8. subn

subn(pattern, repl, string, count=0, flags=0)
返回一个元祖,第一个是替换后的字符串,第二个是替换次数。

origin_str = 'hhhaijewh2374y328hdu8af_=-=[]'
t1 = re.subn('\d', '*', origin_str)
print t1

>>> ('hhhaijewh****y***hdu*af_=-=[]', 8)

参考文章:
python中的正则表达式(re模块)

你可能感兴趣的:(python正则表达式(re模块))