zoukankan      html  css  js  c++  java
  • python基础学习1-正则表达式

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import re
    print(re.findall('alex','yyyyabbblalexrrreooox'))
    
    # ”.“ 通配符   匹配除开”“以外的其他字符
    print(re.findall('al.x','yyyyaalqxbbblalexrrreooox'))
    
    #”^“  在启始位置匹配:
    print(re.findall('^al','alyyyyaalqxbbblalexrrreooox'))
    
    #”$“  在结束位置匹配:
    print(re.findall('oo.$','alyyyyaalqxbbblalexrrreooox'))
    
    #”*“  表示重复 在出现的位置表示对"前一个"字符可以匹配0到多个字符:
    print(re.findall('al.*a','alyyyyaalqxbbblalexrrreooox'))
    
    #”+“  表示重复 在出现的位置表示对"前一个"字符可以匹配1到多个字符:
    print(re.findall('al.+x','alyyyyaalqxbbblalexrrreooox'))
    
    #”?“  表示重复 在出现的位置表示对"前一个"字符可以匹配0到1个字符:
    print(re.findall('al.?x','alyyyyaalqxbbblalexrrreooox'))
    
    #”{}“  表示重复 在出现的位置表示对"前一个"字符可以匹配指定范围个字符:
    print(re.findall('al.{1,3}x','alyyyyaalqxbbblalexrrreooox'))
    
    #”[]“  表示重复 在出现的位置表示可以匹配指定字符出现请 :
    print(re.findall('a[a-z]d','acd'))#a开头 中间出现a-z中任意一个字符 d结尾 都可以匹配 例如 "abd','acd'
    #在[]中出现的元字符 都没有特殊功效只能匹配成一般字符 除开 ”-“表示范围 "^"表示 非  "d" 表示 数字
    print(re.findall('a[^f]d','acd')) #a开头 中间出现非f  d结尾 都可以匹配 例如 "abd','acd'
    print(re.findall('a[d]d','acd')) #a开头 中间出现数字  d结尾 都可以匹配 例如 "a1d','a5d'
    
    """
      反斜杠后边跟元字符去除特殊功能
     反斜杠后边跟普通字符实现特殊功能
     d 匹配十进制数字 相当于[0-9]
     D 匹配任何非数字字符 相当于[^0-9]
     s 匹配任何空白字符 相当于[	
    
    fv]
     S 匹配任何非空白字符 相当于[^	
    
    fv]
     w 匹配任何字母数字字符 相当于[a-zA-Z0-9_]
     W 匹配任何非字母数字字符 相当于[^a-zA-Z0-9_]
      匹配一个单词后面的空格
    
    """
    
    
    #正则表达式的 函数
    
    #match : re.match(pattern,string,flags=0) 只匹配启始位置 并且只匹配一次 找到后退出
    r =re.match('com','comwww.runcomoob')
    print(r.group())#输出匹配到的字符
    print(r.span())#输出匹配到字符的位置信息 启始位置 和终止位置(0,3)
    
    #search : 和match的区别是search匹配任意位置 并且只匹配一次找到后退出
    rs = re.search('com','www.runcomoob')
    print(rs.group())#输出匹配到的字符
    print(rs.span())#输出匹配到字符的位置信息 启始位置 和终止位置(7,10)
    
    #findall:  和上面两个函数方法的 是查询出所有匹配的字符串
    ra = re.findall('com','comwww.runcomoob')
    print(ra)
    
    #findditer: 匹配方法和 findall一样就是返回值 是返回的一个列表
    rr = re.finditer('com','comwww.runcomoob')
    for item in rr:
        print(item.group())
        print(item.span())
    
    
    #sub 安装匹配的字符串替换内容 参数1-需要匹配的字符串格式  2-替换后内容 3-需要替换的原字符串
    rsu= re.sub('g.t','have','Y get A,I got B ,I gut C')#返回替换后的字符串
    print(rsu)
    rsu1 =  re.sub('g.t','have','Y get A,I got B ,I gut C',2)#返回替换后的字符串 指定最大替换次数2
    print(rsu1)
    
    #subn 安装匹配的字符串替换内容 参数1-需要匹配的字符串格式  2-替换后内容 3-需要替换的原字符串 返回值多了 返回替换成功次数
    rn= re.subn('g.t','have','Y get A,I got B ,I gut C')#返回替换后的字符串
    print(rn)
    
    #splite 按照匹配的格式分拆
    rp = re.split('d+','one1tow2tree3four4')
    print(rp)
    
    #compile 把正则表达式编译成一个对象 便于多次调用
    text = "JGood is a handsome boy, he is cool, clever, and so on..."
    regex = re.compile(r'w*oow*')#创建正则表达式对象 regex
    print(regex.findall(text)) #查询所有包含'oo'的单词
    
    # r 转意字符
    r5=re.search(r'\com','adddsscom').group()  #匹配‘com'
    print(r5)
    
    
    #------正则分组::去已经提取到的数据中在提取指定数据
    ors="hasaabc dfuojqw halaabc m098u29341"
    ra1 = re.findall('h(w+)a(ab)c',ors)#默认提取到两个 'halaabc','hasaabc' 在把其中括号括起来的'as','al' 取出来分别和后面'ab'
    # 组一个值 [('as','ab'),('al','ab')]
    print(ra1)
    
    
    #match 和 search 分组方式一样
    origin ="has dfuojqw1m098u29341"
    r= re.match("hw+",origin) #一般正则匹配未分组
    r=re.match("h(w+)",origin)#匹配后分组  显示('as',)
    r =re.match("h(?P<name>w+)",origin)#匹配后分组,并把分组结果保存在字典中 key为name
    
    print(r.group())
    print(r.groups())
    print(r.groupdict())
    
    
    #splite
    
    orr = "hello alex bcd alex lge alex acd 19"
    rs = re.split('(alex)',orr,1) #分组后 把匹配值 也显示出来['hello ', 'alex', ' bcd alex lge alex acd 19']
    rrs = re.split('alex',orr,1)# 未分组,只才分['hello ', ' bcd alex lge alex acd 19']
    print(rrs)
    print(rs)
    
  • 相关阅读:
    【Rust】结构体 struct
    【Rust】所有权、引用、借用
    Centos7升级glibc2.24
    ES用户权限控制
    PHP压缩html网页代码 : 清除空格,制表符,注释标记
    PHP通过HTTP_USER_AGENT判断是否为手机移动终端的函数
    php正则表达式替换URL链接地址为指定url的形式
    PHP下使用CURL方式POST数据至API接口的方法
    设计模式代理模式
    设计模式生成器模式
  • 原文地址:https://www.cnblogs.com/whzym111/p/5804129.html
Copyright © 2011-2022 走看看