re模块与正则

re模块:

  findall:返回的是列表

import  re
ret=re.findall('\d+','1111123aded123ad123')
print(ret)

  search:返回的是对象

ret1=re.search('\d+','@1111123aded123ad123')
print(ret1.group()) 

  match:返回的也是对象,但是match表示从头匹配

ret2=re.match('\d+','1111123aded123ad123')#从头寻找
print(ret2.group())

ret3=re.match('\d+','@1111123aded123ad123')#从头寻找
print(ret2.group())#此处打印为错误

  sub:相当于字符串中的替代

ret=re.sub('\d+','H','1111123aded123ad123')
print(ret)

  subn:替代几次

ret=re.subn('\d+','H','1111123aded123ad123',2)
print(ret)

  split:按照正则进行切割

ret=re.split('\d+','1111123aded123ad123')
print(ret)

  compile:将正则编译成变量,节省时间效率

ret=re.compile('\d+')
c=ret.search('11112223a11')
print(c.group())

  finditer:节省空间效率,生成一个迭代器

finditer
ret=re.finditer('\d','123asdad')
for el in ret:
    print(el.group())

对于分组()在python中re模块的特殊运用:

  findall会优先显示分组中的内容,要想取消分组优先,利用?:取消

  split遇到分组,会保留分组内被切掉的内容

  search遇到分组,通过group(n)可以拿到group中的匹配内容

正则表达式的运用:

  (?P<name>)表示给分组起名字

  (?P=name)表示使用这个分组,这里匹配到的内容应该与分组中的内容相同

 

posted @ 2018-08-08 09:06  浮云遮月  阅读(91)  评论(0编辑  收藏  举报