正则表达式-常用函数

1.编译正则表达式(re.compile())

>>>import re

>>> r1=r"\d{3,4}-?\d{8}"
>>> p_tel=re.compile(r1)
>>> p_tel
<_sre.SRE_Pattern object at 0x00000000016A7C70>

>>> p_tel.findall("01098769087")
['01098769087']

2.执行匹配

(1)match()(是否在字符串刚开始位置匹配)

(2)search()(找到re匹配的位置)

(3)findall()(找到re匹配的所有子串并作为列表返回)

(4)finditer()(找到re匹配的所有子串并作为返迭代器回)

>>> a_re=re.compile(r'csvt',re.I)
>>> a_re.findall('csvt')
['csvt']
>>> a_re.match('csvt hello')
<_sre.SRE_Match object at 0x0000000003A53030>
>>> a_re.search('csvt hello')
<_sre.SRE_Match object at 0x0000000003ACB7E8>
>>> a_re.search('finff csvt hello')
<_sre.SRE_Match object at 0x0000000003A53030>

>>> a_re.findall('finff csvt csvt hello')
['csvt', 'csvt']
>>> a_re.finditer('finff csvt csvt test csvt hello')
<callable-iterator object at 0x00000000039F8AC8>
>>> x=a_re.finditer('finff csvt csvt test csvt hello')
>>> x.next()
<_sre.SRE_Match object at 0x0000000003A53030>

3.MatchObject实例方法

(1)group()(返回被re匹配的字符串)

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

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

(4)span()(返回一个元组包含匹配(开始,结束)的位置)

>>> x=a_re.match('csvt hello')
>>> x
<_sre.SRE_Match object at 0x0000000003ACB7E8>
>>> x.group(0
... )
'csvt'
>>> x.group()
'csvt'

4.模块级函数

re模块顶级函数调用(match()\search()\sub()\subn()\split()\findall()等)

>>> rs=r'c..t'
>>> re.sub(rs,'python','csvt caat cvvt ccc')
'python python python ccc'
>>> re.subn(rs,'python','csvt caat cvvt ccc')
('python python python ccc', 3)

>>> s="123+456-789*000"

>>> re.split(r'[\+\-\*]',s)
['123', '456', '789', '000']

5.编译标志

(1)I,大小写不敏感

(2)S,使.匹配包括换行在内的所有字符

>>> r1=r"csvt.net"
>>> re.findall(r1,'csvt\tnet',re.S)
['csvt\tnet']

(3)L,做本地化识别匹配

(4)M,多行匹配,影响^和$

>>> s='''
... hello csvt
... csvt hello
... hello csvt hello
... csvt hehe
... '''
>>> r=r"^csvt"
>>> re.findall(r,s,re.M)
['csvt', 'csvt']

(5)X,使用REs的 verbose状态

>>> tel=r"""
... \d{3,4}
... -?
... \d{8}
... """
>>> re.findall(tel,'010-12345678',re.X)
['010-12345678']

6.re属性-分组

- "("和")"

>>> email=r"\w{3}@\w+(\.com|\.cn)"
>>> re.findall(email,'zzz@csvt.com')
['.com']

posted @ 2019-10-02 19:08  lemon不酸  阅读(332)  评论(0编辑  收藏  举报