关于re模块

re(regular expression)就是正则表达式英文的缩写,也就是说python利用正则进行一些查找,替换等工作。

re模块的方法:

1,查找

  findall,匹配所有,每一项都是列表中的一个元素,从大段地内容中找出配的项,常用指数5星,缺点是提取出来的数据量如果过大不能及时处理的话,浪费内存。

import re
ret = re.findall("\d+","sajdaijdi123124sad12")
print(ret)    #['123124', '12']

 search 主要用于表单验证,返回的是一个正则匹配的结果,只匹配从左到右的第一个。
import re
ret = re.search("\d+","sajdaijdi123124yfcy23423")
print(ret.group())  #123124

  group的功能是把匹配结果显示出来,如果匹配失败,print(ret)是none,故group(ret)会报错.

  

  match    相当于search参数中的正则表达式前加上^,就是除了,取反的意思,例如匹配\d+,^/d+就是除了数字.

import re
ret = re.search("[^\d]+","sjdakjdk123124")
print(ret.group())  #sjdakjdk

2,替换

  sub(正则,要替换的,实施的字符串,替换次数)

  subn()功能和sub没太大区别 ,就是能返回替换次数.

import re
s = "我很2,你也很2"
ret = re.sub("\d","",s,1)    #如果不写次数,默认全部
print(ret)    #我很帅,你也很2

3,分割

  split, 和字符串时候使用的方法差不多.注意 被切割的地方会消失不见.

import re
s = "小刘和兄贵1小李和小梅"
ret = re.split("\d",s)5[
print(ret)    #['小刘和兄贵', '小李和小梅']

进阶之compile

  把正则表达式进行预编译,节省时间

import re
ret = re.compile("\d+")
res = ret.findall("jksajd123")
print(res)    #["123"]

进阶之finditer

  返回迭代器,可以通过for循环读取数据,节省空间.

import re
ret = re.finditer("\d+","sajdkajd123")
for i in ret:
    print(i.group())    #123

在re中正则表达式的分组的使用

例如:在"<a>wuyuetian</a>"中取出"wuyuetian"

#在findall里,为了findall也能顺利取到分组中的内容,用()会优先取括号内的内容
import re
s = "<a>wuyuetian</a>"
ret = re.findall(">(\w+)<",s)
print(ret)
#分组的序号规则类似于索引,但是记着是从1开始的
s = "<a>wuyuetian</a>"
ret = re.search("(>)(\w+)(<)",s)
print(ret.group(2))    #wuyuetian

关于分组命名:  ?P<name>xxx

s = "<a>wuyuetian</a>"
ret = re.search(">(?<contrnt>\w)<",s)
print(ret.group(content)
 


猜你喜欢

转载自www.cnblogs.com/cuiyuanzhang/p/9494529.html
今日推荐