码迷,mamicode.com
首页 > 其他好文 > 详细

re 模块 025

时间:2018-10-11 22:36:33      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:split   name   列表   正则表达式   优先   iter   spl   oldboy   list   

re 由Python提供的一套关于处理正则表达式的模块有以下四个核心功能:

  import re 

  1. findall # 查找所有 返回列表(list)

    

import re
lst = re.findall(m,mai le fo len , mai ni mei!)
print(lst) #[‘m‘, ‘m‘, ‘m‘]

lst1 = re.findall(r\d+,5点之前,记得给我5000万)
print(lst1) #[‘5‘, ‘5000‘]

  2. finditer # 和findall 差不多 这是是返回迭代器

import re
it = re.finditer(m,mai le fo len, mai ni mei!)
print(it)  #<callable_iterator object at 0x0000021AF5CAC0F0> 迭代器
for el in it:
    print(el.group())  #依然需要分组  挨个拿到元素

  3.search 会进行进行匹配 如果匹配到第一个结果, 就会返回这个结果 如果匹配不上返回的是None

ret = re.search(a,abc).group()
print(ret)  # a
ret1 = re.search(r\d,5点以前, 打给我25块!).group()
print(ret1)  # 5

  4.match 只能从字符串的开头进行匹配 (如果不是a开头会报错)

ret = re.match(a,abc).group()
print(ret)  # a

  正则 : 在Python中()表示分组  (?:)去掉Python的分组

  (?P<名字>正则) 把正则匹配到的内容分组成‘名字‘组

  5.其他操作

    split 按照正则切割.

ret = re.split(r[ab],qwerafjbcd) # 先按‘a‘分割得到‘qwer‘和‘fjbcd‘,再对两者分别按b分割
print(ret) #[‘qwer‘, ‘a‘, ‘fj‘, ‘b‘, ‘cd‘] 没有了a 和 b
ret1 = re.split(r([ab]),qwerafjbcd)# 切割过程和上边的一样 不过保留了a和b
print(ret1) #[‘qwer‘, ‘a‘, ‘fj‘, ‘b‘, ‘cd‘] 有了a 和 b

    sub 替换.

result = re.sub(250,__sb__,alex250taibai250taihei250ritian250liuwei)
print(result) #alex__sb__taibai__sb__taihei__sb__ritian__sb__liuwei

    compile

obj = re.compile(r\d{3}) # 将正则表达式编译成为一个正则表达式对象,规则是要匹配的是3个数字
ret = obj.search(abc123eeee) #正则表达式对象调用search,参数为待匹配的字符串
print(ret.group()) # 结果是123

    爬虫重点

obj = re.compile(r(?P<id>\d+)(?P<name>e+)) #从正则表达式匹配的内容每个组起名字‘?P<>是一体的一起出来‘
ret = obj.search(abc123eeee) # 搜索
print(ret.group()) #结果:123eeee
print(ret.group(id))# 结果 123 获取id组的内容
print(ret.group(name)) # 结果 eeee 获取name组中的内容

    坑 

 ret = re.findall(www.(baidu|oldboy).com, www.oldboy.com)
 print(ret) # 这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可
 ret = re.findall(www.(?:baidu|oldboy).com, www.oldboy.com) # ?: 当前的()不分组
 print(ret) # [‘www.oldboy.com‘]

二 . 模块

  import 模块名

      

    

  

re 模块 025

标签:split   name   列表   正则表达式   优先   iter   spl   oldboy   list   

原文地址:https://www.cnblogs.com/f-g-f/p/9775385.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!