zoukankan      html  css  js  c++  java
  • day19 python之re模块正则练习

    1、匹配标签

    import re
    ret = re.search("<(?P<tag_name>w+)>w+</(?P=tag_name)>", "<h1>hello</h1>")
    # 可以再分组中利用 ?P<name> 的形式给分组起名字,后面的 ?P=tag_name 是引用前面的分组
    # 获取的匹配结果可以直接用 group('name') 拿到对应的值
    print(ret.group('tag_name'))    # 结果:h1
    print(ret.group())              # 结果:<h1>hello</h1>
    
    ret = re.search(r"<(w+)>w+</1>","<h1>hello</h1>")
    # 如果不给组起名字,也可以用 序号 来找到对应的组,表示要找的内容和前面的组内容一致
    # 获取的匹配结果可以直接用 group(序号) 拿到对应的值
    print(ret.group(1))             # 结果:h1
    print(ret.group())              # 结果:<h1>hello</h1>

    2、匹配整数

    import re
    
    ret = re.findall(r"d+", "1-2*(60+(-40.35/5)-(-4*3))")
    print(ret)      # 结果:['1', '2', '60', '40', '35', '5', '4', '3']
    ret = re.findall(r"-?d+.d*|(?:-?d+)", "1-2*(60+(-40.35/5)-(-4*3))")
    print(ret)      # 结果:['1', '-2', '60', '-40.35', '5', '-4', '3']
    ret = re.findall(r"-?d+.d*|(-?d+)", "1-2*(60+(-40.35/5)-(-4*3))")                # 分组优先
    print(ret)      # 结果:['1', '-2', '60', '', '5', '-4', '3']
    ret.remove("")
    print(ret)      # 结果:['1', '-2', '60', '5', '-4', '3']

    3、数字匹配

    # 1、 匹配一段文本中的每行的邮箱
    s = 'http://blog.csdn.net/make164492212/article/details/51656638'
    ret = re.search(r"w+.w+.w+",s)
    print(ret.group())      # blog.csdn.net
    # 2、 匹配一段文本中的每行的时间字符串,比如:‘1990-07-12’;
    #
    #    分别取出1年的12个月(^(0?[1-9]|1[0-2])$)、
    #    一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$
    #
    # 3、 匹配qq号。(腾讯QQ号从10000开始)  [1,9][0,9]{4,}
    #
    # 4、 匹配一个浮点数。       ^(-?d+)(.d+)?$   或者  -?d+.?d*
    #
    # 5、 匹配汉字。             ^[u4e00-u9fa5]{0,}$
    #
    # 6、 匹配出所有整数

    4、flag

    flags有很多可选值:
    
    re.I(IGNORECASE)忽略大小写,括号内是完整的写法
    re.M(MULTILINE)多行模式,改变^和$的行为
    re.S(DOTALL)点可以匹配任意字符,包括换行符
    re.L(LOCALE)做本地化识别的匹配,表示特殊字符集 w, W, , B, s, S 依赖于当前环境,不推荐使用
    re.U(UNICODE) 使用w W s S d D使用取决于unicode定义的字符属性。在python3中默认使用该flag
    re.X(VERBOSE)冗长模式,该模式下pattern字符串可以是多行的,忽略空白字符,并可以添加注释
  • 相关阅读:
    [C++] static member variable and static const member variable
    [C++] const inside class VS const outside class
    [C++] OOP
    [C++] Function Template
    [C++] right value reference
    [C++] advanced reference
    [C++] const and char*
    [C++] c Struct VS c++ Struct
    [C++] decltype(auto) C++ 11 feature
    easyui-validatebox 的简单长度验证
  • 原文地址:https://www.cnblogs.com/87pzy/p/10631547.html
Copyright © 2011-2022 走看看