zoukankan      html  css  js  c++  java
  • re 模块详解

    1.re 模块 regex

    1.查找 :findall

    意思"匹配所有,每一项都是列表的组成元素" 有返回值

    1 import re
    2 ret=re.findall("d+","sdadadj我5454 4445")
    3 print(ret)#这里输出的是列表,而且使用逗号隔开
    4 #中间调用re模块 当结果没有匹配时,会显示空列表

    2.查找 search

    意思:只匹配列表从左到右第一个,得到的不是直接结果,通过变量group()的方法获取结果,没有匹配会报错

    1 import re
    2 ret=re.search('d+','15645646456阿杀手锏1354444jkashasjkd').group()#这里group可以放在ret后
    3 print(ret)#如果直接输出拿出的是#如果search没有匹配的,会报错,而且只拿第一项
    4 #

    3.查找:match

    意思:就是从头开始匹配,相当于search中加入一个^

    1 import re
    2 ret=re.match("d*",'88dasdas小鸡小鸡洗洁精22')
    3 print(ret.group())#这里match也需要有一个.group()来输出
    4 match就相当于search前面匹配的加上了^ 要是没有匹配到就会报错
    5 #

    4.替换 sub

    意思:找到要替换的一换掉

     1  5.import re
     2  ret=re.sub("d+","Q","assd54544jsdas22",1)#前面的是一个正则表达式
     3 谁 新的 替换 次数
     4  print(ret)
     5 
     6 
     7  5.1import re
     8  ret=re.subn("d+","Q","assd54544jsdas22",1)#前面的是一个正则表达式
     9 谁 新的 替换 次数
    10  print(ret)#这里的subn是返回一个元祖,不添加n返回字符串

    5.切割 split

    意思:这里的切割是将元素切掉,形成一个新的列表

    1 import re
    2 ret=re.split("a",'acbcd')#这里的切割是将匹配的元素切割掉,形成一个列表
    3 print(ret)#
    4 import re
    5 ret=re.split("(a)",'acbcd')#在匹配的部分上加上()之后所得出的结果是不同的
    6  没有()的没有保留用来切割的元素,但是有()可以保留切割下的元素
    7  这在某些需要保留匹配的十分重要
    8 print(ret)#

    6re模块进阶

    compile :声明

    意思:这里会提前声明好正则,节省后面时间

    1  6.import re
    2  ret=re.compile("d+")#compile这里进阶的是可以节省时间,提前声明
    3  匹配的元素后面的都可以调用,省去写"d+"的时间
    4 res=ret.search("1拒绝23456")
    5  ress=ret.search("硕大的5大声道55")
    6  print(res.group())
    7  print(ress.group())

    7.re模块进阶

    finditer:

    意思:返回一个迭代器,所有的结果放到迭代器中,要循环+group的形式取值,节省时间

    1  7.import re
    2  ret=re.finditer("d+","alex80taibai40")#优点可以节省内存
    3  print(ret)#这里返回的是地址,可以把他当成调用迭代器
    4  print(ret.__next__().group())#输出第一项,注意需要在后面加group
    5  print(ret.__next__().group())#输出第二项
    6  for i in ret:#全部输出
    7      print(i.group())

    8.()分组技巧

    1 import re
    2  s = '<a>wahaha</a>'  # 标签语言 html 网页
    3  ret = re.search('<(w+)>(w+)</(w+)>',s)
    4  print(ret.group())  # 所有的结果
    5  print(ret.group(1)) # 数字参数代表的是取对应分组中的内容
    6  print(ret.group(2))
    7  print(ret.group(3))
    1  ret=re.findall("(w+)",s) print(ret)
    2 ret = re.findall('>w+<',s)
    3  print(ret)#['>wahaha<']
    1  ret = re.findall('>(w+)<',s)#当在用findall来获取内容时,有的时候你想要获取的并不
    2 是他所展现出的,这个时候可以用()分组来显示优先级但这个只是显示在模块中,在正则表达式
    3 在线测试并不适用
    4  print(ret)#['wahaha']

    取消优先级 ?:

    1 10. import  re
    2  ret=re.findall("d+(?:.d+)?",'1.222*4')#在取消优先级的时候要在你优先级()里面
    3  的最前方添加?:可以取消优先级
    4  print(ret)

    取名 ?p

    1 使用这样的必须前后一致
    2 s = '<a>wahaha</a>'
    3 pattern = '<(w+)>(w+)</(w+)>'
    4 ret = re.search(pattern,s)
    5 print(ret.group(1) == ret.group(3))
    6 s="sadsadaa"
    7 print(s.count("a"))
    1  12.import re
    2  s="<a>wahaha</a>"
    3  ret=re.search(">(?P<zq>w+)<",s)#分组命名是将(?:<这个组的名字>正则表达式),
    4 
    5 而且这个名字代表这个group的位置
    6  print(ret.group(1))
    7  print(ret.group('zq'))
  • 相关阅读:
    Android热修复框架之优逆势分析(Hotfix)
    屏幕旋转时调用PopupWindow update方法更新位置失效的问题及解决方案
    快速搭建一个本地的FTP服务器
    Android性能优化之启动速度优化
    Android辅助功能原理与基本使用详解-AccessibilityService
    Android高效内存之让你的图片省内存
    Android高效内存1:一张图片占用多少内存
    gRPC helloworld service, RESTful JSON API gateway and swagger UI
    关于Node.js的httpClieint请求报错ECONNRESET的原因和解决措施
    Tensorflow学习笔记4:分布式Tensorflow
  • 原文地址:https://www.cnblogs.com/zhangqing979797/p/9497052.html
Copyright © 2011-2022 走看看