zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    [CLK Framework] CLK.Settings
    [Architecture Design] CLK Architecture
    记一次 bug 修复 , 未将对象引用实例化
    Invoke 与 BeginInvoke 应用场景
    一次发布生产版程序异常排查总结
    C# 使用 SmtpClient 发送邮件注意项
    MSSql Server 批量插入数据优化
    Window Server 布署 WCF 服务 , 权限配置问题
    C++ 值类型和引用类型传递示例
    VS2015 C#调用C++ 托管代码无法调试问题排查
  • 原文地址:https://www.cnblogs.com/leecoffee/p/9034364.html
Copyright © 2011-2022 走看看