• python正则表达式(二)


     

    表示字符

    示例1: .

    #coding=utf-8
    
        import re
    
        ret = re.match(".","a")
        ret.group()
    
        ret = re.match(".","b")
        ret.group()
    
        ret = re.match(".","M")
        ret.group()

    示例2:[ ]

    #coding=utf-8
    
        import re
    
        # 如果hello的首字符小写,那么正则表达式需要小写的h
        ret = re.match("h","hello Python")
        ret.group()
    
    
        # 如果hello的首字符大写,那么正则表达式需要大写的H
        ret = re.match("H","Hello Python")
        ret.group()
    
        # 大小写h都可以的情况
        ret = re.match("[hH]","hello Python")
        ret.group()
        ret = re.match("[hH]","Hello Python")
        ret.group()
    
        # 匹配0到9第一种写法
        ret = re.match("[0123456789]","7Hello Python")
        ret.group()
    
        # 匹配0到9第二种写法
        ret = re.match("[0-9]","7Hello Python")
        ret.group()

    示例3:d

    #coding=utf-8
    
        import re
    
        # 普通的匹配方式
        ret = re.match("嫦娥1号","嫦娥1号发射成功")
        print ret.group()
    
        ret = re.match("嫦娥2号","嫦娥2号发射成功")
        print ret.group()
    
        ret = re.match("嫦娥3号","嫦娥3号发射成功")
        print ret.group()
    
        # 使用d进行匹配
        ret = re.match("嫦娥d号","嫦娥1号发射成功")
        print ret.group()
    
        ret = re.match("嫦娥d号","嫦娥2号发射成功")
        print ret.group()
    
        ret = re.match("嫦娥d号","嫦娥3号发射成功")
        print ret.group()

    原始字符串

    >>> mm = "c:\a\b\c"
    >>> mm
    'c:\a\b\c'
    >>> print(mm)
    c:ac
    >>> print(mm)
    c:ac
    >>> re.match("c:\\",mm).group()
    'c:\'
    >>> ret = re.match("c:\\",mm).group()
    >>> print(ret)
    c:
    >>> ret = re.match("c:\\a",mm).group()
    >>> print(ret)
    c:a
    >>> ret = re.match(r"c:\a",mm).group()
    >>> print(ret)
    c:a
    >>> ret = re.match(r"c:a",mm).group()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'NoneType' object has no attribute 'group'
    >>>

    说明

    Python中字符串前面加上 r 表示原生字符串

    与大多数编程语言相同,正则表达式里使用""作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。

    Python里的原生字符串很好地解决了这个问题,有了原始字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。

    >>> ret = re.match(r"c:\a",mm).group()
    >>> print(ret)
    c:a

    表示数量

    匹配多个字符的相关格式

    示例1:*

    需求:匹配出,一个字符串第一个字母为大小字符,后面都是小写字母并且这些小写字母可有可无

    #coding=utf-8
    import re
    
    ret = re.match("[A-Z][a-z]*","Mm")
    ret.group()
    
    ret = re.match("[A-Z][a-z]*","Aabcdef")
    ret.group()

    示例2:+

    需求:匹配出,变量名是否有效

    #coding=utf-8
    import re
    
    ret = re.match("[a-zA-Z_]+[w_]*","name1")
    ret.group()
    
    ret = re.match("[a-zA-Z_]+[w_]*","_name")
    ret.group()
    
    ret = re.match("[a-zA-Z_]+[w_]*","2_name")
    ret.group()

    示例3:?

    需求:匹配出,0到99之间的数字

    #coding=utf-8
    import re
    
    ret = re.match("[1-9]?[0-9]","7")
    ret.group()
    
    ret = re.match("[1-9]?[0-9]","33")
    ret.group()
    
    ret = re.match("[1-9]?[0-9]","09")
    ret.group()

    示例4:{m}

    需求:匹配出,8到20位的密码,可以是大小写英文字母、数字、下划线

    #coding=utf-8
    import re
    
    ret = re.match("[a-zA-Z0-9_]{6}","12a3g45678")
    ret.group()
    
    ret = re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66")
    ret.group()

  • 相关阅读:
    剑指offer之 二维数组的查找
    常用的基础算法总结之 希尔排序
    让shell脚本中的echo输出带颜色
    nginx利用lua实现nginx反向代理proxy_store缓存文件自删除
    LNMP平滑升级nginx并安装ngx_lua模块教程
    nginx的luajit安装luarocks并安装luafilesystem
    PHP图片识别成文字
    使用tesseract-ocr破解网站验证码
    利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别
    http://ocr.wdku.net/
  • 原文地址:https://www.cnblogs.com/leecoffee/p/9034364.html
Copyright © 2020-2023  润新知