zoukankan      html  css  js  c++  java
  • 正则

    #!/usr/bin/python
    # coding: utf-8
    import re
    
    '''
    .                    匹配任意字符(不包括换行符)
    ^                    匹配开始位置,多行模式下匹配每一行的开始
    $                    匹配结束位置,多行模式下匹配每一行的结束
    *                    匹配前一个元字符0到多次
    +                    匹配前一个元字符1到多次
    ?                    匹配前一个元字符0到1次
    {m,n}                匹配前一个元字符m到n次
    \                   转义字符,跟在其后的字符将失去作为特殊元字符的含义,例如\.只能匹配.,不能再匹配任意字符
    []                   字符集,一个字符的集合,可匹配其中任意一个字符
    |                    逻辑表达式 或 ,比如 a|b 代表可匹配 a 或者 b
    (...)                分组,默认为捕获,即被分组的内容可以被单独取出,默认每个分组有个索引,从 1 开始,按照"("的顺序决定索引值
    (?iLmsux)            分组中可以设置模式,iLmsux之中的每个字符代表一个模式,用法参见 模式 I
    (?:...)              分组的不捕获模式,计算索引时会跳过这个分组
    (?P<name>...)        分组的命名模式,取此分组中的内容时可以使用索引也可以使用name
    (?P=name)            分组的引用模式,可在同一个正则表达式用引用前面命名过的正则
    (?#...)              注释,不影响正则表达式其它部分,用法参见 模式 I
    (?=...)              顺序肯定环视,表示所在位置右侧能够匹配括号内正则
    (?!...)              顺序否定环视,表示所在位置右侧不能匹配括号内正则
    (?<=...)             逆序肯定环视,表示所在位置左侧能够匹配括号内正则
    (?<!...)             逆序否定环视,表示所在位置左侧不能匹配括号内正则
    (?(id/name)yes|no)   若前面指定id或name的分区匹配成功则执行yes处的正则,否则执行no处的正则
    
    umber              匹配和前面索引为number的分组捕获到的内容一样的字符串
    A                   匹配字符串开始位置,忽略多行模式
                       匹配字符串结束位置,忽略多行模式
                       匹配位于单词开始或结束位置的空字符串
    B                   匹配不位于单词开始或结束位置的空字符串
    d                   匹配一个数字, 相当于 [0-9]
    D                   匹配非数字,相当于 [^0-9]
    s                   匹配任意空白字符, 相当于 [ 	
    
    fv]
    S                   匹配非空白字符,相当于 [^ 	
    
    fv]
    w                   匹配数字、字母、下划线中任意一个字符, 相当于 [a-zA-Z0-9_]
    W                   匹配非数字、字母、下划线中的任意字符,相当于 [^a-zA-Z0-9_]
    '''
    
    def testdote():
        str1 = 'hello<b><b><hb> <strong> </strong> <h1>world</h1>'
        print(re.sub(r"<.*?>",'09',str1))#hello09 09 09 09world09
        print(re.sub(r"<strong>",'09',str1))#hello09 <strong> <strong> <h1>world</h1>
        print(re.sub(r"<[^>]+>",'x',str1))#helloxxx x x xworldx-
        print(re.sub(r"<[^strong]+>",'x',str1))#hellox <strong> <strong> xworldx
        print(re.sub(r"<[^h1]+>",'x',str1))#hellox<hb> x <h1>world</h1>
    
        str = "ab123ba4b56b"
        # + 匹配前一个元字符1到多次
        # ? 匹配前一个元字符0到1次
        print(re.sub(r"a(.?)b","-",str))#-123b-56b
        print(re.sub(r"[ab123]",'=',str))#=======4=56=
        print(re.sub(r"[^ab123$]",'.',str))#ab123ba.b..b
        print(re.findall(r"a(.+?)b", str))#['b123', '4']
        print(re.findall(r"a(.?)b", str))#['', '4']
        print(re.findall(r"a(.+)b", str))#['b123ba4b56']
        print(re.findall(r"a(.*)b", str))#['b123ba4b56']
        print(re.findall(r"a(.{1,3})b", str))#['4']
        print(re.findall(r"a(.{1,4})b", str))#['b123', '4b56']
        print(re.findall(r"a(.{1,10})b", str))#['b123ba4b56']
        print(re.findall(r"a|b", str))#['a', 'b', 'b', 'a', 'b', 'b']
        print(re.sub(r"a|b","x",str))#xx123xx4x56x
        print(re.sub(r"[^12$]","-",str))# --12--------
    
    testdote()
    

      

  • 相关阅读:
    Coursera机器学习week11 单元测试
    关于 TypeReference 的解释
    getModifiers 方法解释。
    instanceof isInstance isAssignableFrom 比较
    elasticsearch 基础 语法总结
    kibana 启动 关闭 和进程查找
    MD5 SHA1 SHA256 SHA512 SHA1WithRSA 的区别
    spring boot 项目 热启动
    java zip 压缩文件
    Packet for query is too large (1660 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
  • 原文地址:https://www.cnblogs.com/mafy/p/13999814.html
Copyright © 2011-2022 走看看