zoukankan      html  css  js  c++  java
  • python——re模块

    python——re模块

    一 正则表达式的作用

    1、给字符串进行模糊匹配,

    2、对象就是字符串

     

    二 字符匹配(普通字符、元字符)

    普通字符:数字字符和英文字母和自身匹配
    2.元字符:. ^ $ * + ? {} [] () |
    re.方法("规则","匹配的字符串")

    re.findall() 找到所有的匹配元素,返回一个列表

    . 匹配任意一个字符,除了 换行符

     

    ^ 从字符串开始匹配的位置

    print(re.findall("a..c","abbc"))
    # ['abbc']

    $ 从字符串结尾匹配

    print(re.findall("alex$","yuanegonalex"))
    # ['alex']
    

    * + ? {} :重复

    * 匹配所有[0 -00] 0-无穷次

    print(re.findall("ale*","yuanalexxxx"))
    # ['ale']

      

    + 匹配范围[1-oo] 1-无穷次

    print(re.findall("alex+","yuanegongalex"))
    # ['alex']

      

    ? 匹配范围[0-1] 0-1次

    print(re.findall("alex?","yuanegongalexxxx"))
    # ['alex']
    

    {}万能的 范围自己定{0,无穷次}==*  {1,无穷次}==+   {0,1次}==?

    print(re.findall("alex{1,4}","yuanalexxxxxx"))
    # ['alexxxx']
    

    () 分组  

    print(re.findall("(ad)+yuan","addddyuansdf"))
    # 空值[]
    
    print(re.findall("(ad)+yuan","adadyuangfsdui"))#优先匹配(ad)
    # ['ad']
    

    ?:取消优先级  

    print(re.findall("(?:ad)+yuan","adadyuangfsdui")) # ?:取消优先级
    # ['adadyuan']
    

      

    print(re.findall("(d)+yuan","adad678423yuang4234fsdui"))#默认最后一个数字
    # ['3']
    

      

    print(re.findall("(?:d)+yuan","adad678423yuang4234fsdui")) #取消优先级
    # ['678423yuan']
    

     

    [] 字符集合设定符  

    1.或的功能 字符集里面特殊意义的 [-] [^] []

    2.注意:* ,+ ,. 等元字符都是普通符号

    print(re.findall('a[bc]d','acdabd')) #或的意思
    # ['acd', 'abd']
    
    print(re.findall('[a-z]','acd'))
    # ['a', 'c', 'd']
    

      

    print(re.findall('[.*+]','a.cd+')) #把.和+匹配出来
    # ['.', '+']
    

    特殊意义的 [-] [^] [] 

    print(re.findall('[1-9]','45dha3')) #取1至9的数字
    # ['4', '5', '3']
    

      

    print(re.findall('[^ab]','45bdha3'))#取ab以外的字母及数字
    # ['4', '5', 'd', 'h', '3']
    

      

    print(re.findall('[d]','45bdha3'))#取所有的数字
    # ['4', '5', '3']
    

      

    或的意思

    print(re.findall("www.(?:oldboy|baidu).com","www.oldboy.com"))
    # ['www.oldboy.com']
    

      :转义
     1 后面加一个元字符使其变成普通符号
     2 将一些普通符号编程特殊符号 比如 d w  

    print(re.findall("d+*d+","2*6+7*45+4*3-8/4")) #取出乘法
    # ['2*6', '7*45', '4*3']
    

      

    print(re.findall("d+.?d**d+.?d*","2*6+7*45+1.4*3-8/4")) #取出带有小数点的乘法
    # ['2*6', '7*45', '1.4*3']
    

    三 元字符之转义符

    反斜杠后边跟元字符去除特殊功能,比如.
    反斜杠后边跟普通字符实现特殊功能,比如d

    d  匹配任何十进制数;它相当于类 [0-9]。
    D 匹配任何非数字字符;它相当于类 [^0-9]。
    s  匹配任何空白字符;它相当于类 [ fv]。
    S 匹配任何非空白字符;它相当于类 [^ fv]。
    w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
    W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
      匹配一个特殊字符边界,比如空格 ,&,#等

    四 正则表达式方法 

    re.findall()  ---->列表  查找

    re.finditer  可调用的迭代器 查找

    s=re.finditer("d+","ad324das32")
    print(s)
    print(next(s).group())
    print(next(s).group())
    # 324
    # 32
    

    search 只匹配第一个结果  查找

    ret=re.search("d+","djksf34asd3")
    print(ret.group())
    # 34
    

    match: 只在字符串开始的位置匹配 查找  

    ret=re.match("d+","423dgssdf34dsfd3")
    print(ret.group())
    # 423
    

    split 分割

    s2=re.split("d+","fsd3445sdfdss54skf4533sd")
    print(s2)
    # ['fsd', 'sdfdss', 'skf', 'sd']
    
    s2=re.split("d+","fsd3445sdfdss54skf4533sd",2) #最大值分割
    print(s2)
    # ['fsd', 'sdfdss', 'skf4533sd']
    
    ret3=re.split("l","hello yuan")
    print(ret3)
    # ['he', '', 'o yuan']
    

    sub 替换  

    ret4=re.sub("d+","A","hello 234jkhh23")
    print(ret4)
    # hello AjkhhA
    
    ret4=re.sub("d+","A","hello 234jkhh23",1)
    print(ret4)
    # hello Ajkhh23
    

    compile :编译方法  

    c=re.compile("d+")
    ret5=c.findall("hello32world53")  #查找这些数字
    print(ret5)
    # ['32', '53']
    
  • 相关阅读:
    Linux各个目录的作用及内容
    发现未授权登录用户怎么办
    开启GodMode
    通过域名方式决定使用哪个数据库的方式分享
    openerp-server.conf 中配置 dbfilter 参数无效的解决办法
    OpenERP7.0 忘记admin管理员密码解决办法
    DEB方式在UBUNTU安装ODOO 8.0
    解决apt-get的E: Could not get lock /var/lib/dpkg/lock方法
    Ubuntu 11.04 (Natty) 已经停止支持 但可以使用old-releases源了
    How to get the url of a page in OpenERP?
  • 原文地址:https://www.cnblogs.com/niejinmei/p/6792160.html
Copyright © 2011-2022 走看看