zoukankan      html  css  js  c++  java
  • day23_1-re模块之转义字符、分组、方法

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # ------------------------------------------------------------
    # 参考资料:
    # python模块(转自Yuan先生) - 狂奔__蜗牛 - 博客园
    # https://www.cnblogs.com/guojintao/articles/9070485.html
    # Python 正则表达式 | 菜鸟教程
    # http://www.runoob.com/python/python-reg-expressions.html
    # ------------------------------------------------------------
    # ********************day23_1-re模块之转义字符、分组、方法 *******************
    # ********************day23_1-re模块之转义字符、分组、方法 *******************
    # =====>>>>>>内容概览
    # =====>>>>>>内容概览


    # ------------------------------------------------------------
    # # 1、 与 r字符串
    # # #  匹配一个特殊字符边界,比如空格 ,&,#等
    # # # r字符串:r'': 一般用在正则表达式中,称为原始字符串,作用是将Python语法中的反斜杠转义给
    # # # 取消,将其设置成为一个普通的字符串。
    # # # 如 re.findall(r' ','I AM LIST '), r' '中的“ ”就只是一个正常的符号,python
    # # # 编译器中不再具有“换行”功能,进入re模块处理的时候,按照re对于“ ”的含义来处理
    # # #
    # # # 二十三、正则表达式中的“r”含义 - CSDN博客
    # # # https://blog.csdn.net/chushujin/article/details/81380694
    # # # 正则表达式r和re - CSDN博客
    # # # https://blog.csdn.net/y15518325965/article/details/79405779
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 2、r字符串补充
    # # # r字符串:r'': 一般用在正则表达式中,称为原始字符串,作用是将Python语法中的反斜杠转义给
    # # # 取消,将其设置成为一个普通的字符串。
    # # # 如 re.findall(r' ','I AM LIST '), r' '中的“ ”就只是一个正常的符号,python
    # # # 编译器中不再具有“换行”功能,进入re模块处理的时候,按照re对于“ ”的含义来处理
    # # #
    # # # 二十三、正则表达式中的“r”含义 - CSDN博客
    # # # https://blog.csdn.net/chushujin/article/details/81380694
    # # # 正则表达式r和re - CSDN博客
    # # # https://blog.csdn.net/y15518325965/article/details/79405779
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 3、元字符或 a|b
    # # # 匹配a或b
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 4、元字符之分组()
    # # # 匹配括号内的表达式,也表示一个组
    # # #
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 5、re.search
    # # # 扫描整个字符串并返回第一个成功的匹配。
    # # # 匹配成功re.search方法返回一个匹配的对象,否则返回None。
    # # # 我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 6、re.search.group 与 groups ???
    # # # group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,
    # # # 在这种情况下它将返回一个包含那些组所对应值的元组。
    # # #
    # # # groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 7、re.group("标签"),在re.search("(?P<标签>匹配内容与规则)",被匹配字符串)的应用
    # # #
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 8、re.group("标签"),在re.search("(?P<标签>匹配内容与规则)",被匹配字符串)的应用
    # # #
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 9、re方法的使用
    # # # findall、search使用的比较多
    # # # march等用的比较少
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 10、re.match
    # # # re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,
    # # # match()就返回none。 相当于search方法加元字符^
    # # #
    # # # re.match(pattern, string, flags=0)
    # # # pattern 匹配的正则表达式
    # # # string 要匹配的字符串。
    # # # flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 11、re.match.group
    # # # 作用于re.search.group相同,见上面
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 12、re.split
    # # # split 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:
    # # #
    # # # re.split(pattern, string[, maxsplit=0, flags=0])
    # # # pattern 匹配的正则表达式
    # # # string 要匹配的字符串。
    # # # maxsplit 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
    # # # flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
    # # # 参见:正则表达式修饰符 - 可选标志
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 13、re.sub
    # # # Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。
    # # #
    # # # re.sub(pattern, repl, string, count=0, flags=0)
    # # # pattern : 正则中的模式字符串。
    # # # repl : 替换的字符串,也可为一个函数。
    # # # string : 要被查找替换的原始字符串。
    # # # count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 14、re.subn
    # # # Python 的 re 模块提供了re.subn用于替换字符串中的匹配项。并且返回替换的次数
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 15、re.compile
    # # # compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,
    # # # 供 match() 和 search() 这两个函数使用。
    # # # ===>>>只有少数使用的时候,使用该方式与不用,差别不大;但是在数量非常多的时候,能够非常
    # # # ===>>>显著的提高程序的运行效率,原因在于,compile提前进行的编译处理,以后用到的该方法都可以不用重新
    # # # ===>>>编译就可以使用
    # # #
    # # # re.compile(pattern[, flags])
    # # # pattern : 一个字符串形式的正则表达式
    # # # flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:
    # # # re.I 忽略大小写
    # # # re.L 表示特殊字符集 w, W, , B, s, S 依赖于当前环境
    # # # re.M 多行模式
    # # # re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
    # # # re.U 表示特殊字符集 w, W, , B, d, D, s, S 依赖于 Unicode 字符属性数据库
    # # # re.X 为了增加可读性,忽略空格和 # 后面的注释
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 15、re.finditer
    # # # 和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
    # # #
    # # # re.finditer(pattern, string, flags=0)
    # # # pattern 匹配的正则表达式
    # # # string 要匹配的字符串。
    # # # flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表
    # # # 达式修饰符 - 可选标志
    # ------------------------------------------------------------

    # ------------------------------------------------------------
    # # 16、findall、search在计算表达式中的应用
    # # # 使用search 能逐次的将计算表达式中的内容取出来,清晰明了
    # # # 使用findall一次性将计算表达式中的内容取出来
    # # # 相比之下,在计算表达式上,search更合适一些
    # ------------------------------------------------------------

    
    

    # ------------------------------------------------分割线-------------------------------------------------
    # ------------------------------------------------分割线-------------------------------------------------
    # ------------------------------------------------分割线-------------------------------------------------
    
    
    # 01 02 转义字符、分组
    # 01 02 转义字符、分组
    '''
    # ------------------------------------------------------------
    # # 1、  与 r字符串
    # # #  匹配一个特殊字符边界,比如空格 ,&,#等
    # # #  r字符串:r'': 一般用在正则表达式中,称为原始字符串,作用是将Python语法中的反斜杠转义给
    # # #  取消,将其设置成为一个普通的字符串。
    # # #  如  re.findall(r'
    ','I
     AM
     LIST
    '),  r'
    '中的“
    ”就只是一个正常的符号,python
    # # #  编译器中不再具有“换行”功能,进入re模块处理的时候,按照re对于“
    ”的含义来处理
    # # #
    # # #  二十三、正则表达式中的“r”含义 - CSDN博客
    # # #  https://blog.csdn.net/chushujin/article/details/81380694
    # # #  正则表达式r和re - CSDN博客
    # # #  https://blog.csdn.net/y15518325965/article/details/79405779
    # ------------------------------------------------------------
    '''
    #
    # import re
    #
    # # r字符串
    # b1 = re.findall('\n','I
     AM
     LIST
    ')
    # b2 = re.findall(r'
    ','I
     AM
     LIST
    ')
    # print("b1",b1)
    # print("b2",b2)
    #
    # # 
    # a1 = re.findall('I','I AM LIST')
    # a2 = re.findall('^I','I AM LIST')
    # a3 = re.findall('I\b','I AM LIST')
    # # 使在字符串在编译器中扌安照原来的含义,在re中实现功能
    # a4 = re.findall(r'I','I AM LIST')
    #
    # print(a1)
    # print(a2)
    # print(a3)
    # print(a4)
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # b1 ['
    ', '
    ', '
    ']
    # # b2 ['
    ', '
    ', '
    ']
    # # ['I', 'I']
    # # ['I']
    # # ['I']
    # # ['I']
    # #
    # # Process finished with exit code 0
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 2、r字符串补充
    # # #  r字符串:r'': 一般用在正则表达式中,称为原始字符串,作用是将Python语法中的反斜杠转义给
    # # #  取消,将其设置成为一个普通的字符串。
    # # #  如  re.findall(r'
    ','I
     AM
     LIST
    '),  r'
    '中的“
    ”就只是一个正常的符号,python
    # # #  编译器中不再具有“换行”功能,进入re模块处理的时候,按照re对于“
    ”的含义来处理
    # # #
    # # #  二十三、正则表达式中的“r”含义 - CSDN博客
    # # #  https://blog.csdn.net/chushujin/article/details/81380694
    # # #  正则表达式r和re - CSDN博客
    # # #  https://blog.csdn.net/y15518325965/article/details/79405779
    # ------------------------------------------------------------
    '''
    #
    # import re
    #
    # # 这个有四个,是因为,在编译器:\代表一个原生字符,\\代表两个原生字符\,
    # # 进入re后,一个是有特殊意义的,因此两个\代表在re中的原生字符,
    # # 当处理结束,返回python编译器,应该是一个字符,后面编译器将它翻译为\,以此表示是原生字符
    # l2 = re.findall('\\','I AM LIST?')
    # l22 = re.findall(r'\','I AM LIST?')
    #
    # print("l2",l2)
    # print("l22",l22)
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # l2 ['\', '\', '\']
    # # l22 ['\', '\', '\']
    # #
    # # Process finished with exit code 0
    
    
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 3、元字符或 a|b 
    # # #  匹配a或b
    # ------------------------------------------------------------
    '''
    
    # import re
    # # 先匹配ka,后b
    # a1 = re.findall('ka|b','kakbkab')
    # print(a1)
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # ['ka', 'b', 'ka', 'b']
    # #
    # # Process finished with exit code 0
    
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 4、元字符之分组()
    # # #  匹配括号内的表达式,也表示一个组
    # # #  
    # ------------------------------------------------------------
    '''
    #
    # import re
    # a1 = re.findall('(abc)','abcabcabc')
    # a2 = re.findall('(abc)*','abcabcabc')           # ???
    # a3 = re.findall('(abc)+','abcabcabc')           # ???
    # a4 = re.findall('(abc)?','abcabcabc')           # ???
    #
    # b1 = re.findall('(abc)','abccc')
    # b2 = re.findall('(abc)*','abccc')
    # b3 = re.findall('(abc)+','abccc')
    # b4 = re.findall('(abc)?','abccc')
    #
    # print(a1)
    # print(a2)
    # print(a3)
    # print(a4)
    #
    # print("b1",b1)
    # print("b2",b2)
    # print("b3",b3)
    # print("b4",b4)
    #
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # ['abc', 'abc', 'abc']
    # # ['abc', '']
    # # ['abc']
    # # ['abc', 'abc', 'abc', '']
    # # b1 ['abc']
    # # b2 ['abc', '', '', '']
    # # b3 ['abc']
    # # b4 ['abc', '', '', '']
    # #
    # # Process finished with exit code 0
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 5、re.search 
    # # # 扫描整个字符串并返回第一个成功的匹配。
    # # # 匹配成功re.search方法返回一个匹配的对象,否则返回None。
    # # # 我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
    
    # ------------------------------------------------------------
    '''
    #
    import re
    #
    # a0 = re.search("d","asfd22af33asf555")
    # a1 = re.search("d+","asfd22af33asf555")
    # a2 = re.search("d+","asfdqwresfad")
    # a3 = re.search("d[5]","asfd22af33asf555")
    # print(a0)
    # print(a1)
    # print(a2)
    # print(a3)
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # <_sre.SRE_Match object; span=(4, 5), match='2'>
    # # <_sre.SRE_Match object; span=(4, 6), match='22'>
    # # None
    # # <_sre.SRE_Match object; span=(13, 15), match='55'>
    # #
    # # Process finished with exit code 0
    
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 6、re.search.group 与 groups          ???
    # # # group(num=0)	匹配的整个表达式的字符串,group() 可以一次输入多个组号,
    # # # 在这种情况下它将返回一个包含那些组所对应值的元组。
    # # # 
    # # # groups()	返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
    # ------------------------------------------------------------
    '''
    #
    # import re
    #
    # a0 = re.search("d", "asfd22af33asf555")
    # a1 = re.search("d+", "asfd22af33asf555")
    # a2 = re.search("d+", "asfdqwresfad")
    # a3 = re.search("d[5]", "asfd22af33asf555")
    # print(a0.group(),type(a0.group()))
    # print(a1.group())
    # # # print(a2.group())     # 报错,因为匹配不到,返回的是None,因此无法来取值
    # print(a3.group())
    #
    # print(a0.groups())                  # ????
    # print(a1.groups())
    # # # print(a2.groups())     # 报错,因为匹配不到,返回的是None,因此无法来取值
    # print(a3.groups())
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # 2
    # # 22
    # # 55
    # # ()
    # # ()
    # # ()
    # #
    # # Process finished with exit code 0
    #
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 7、re.group("标签"),在re.search("(?P<标签>匹配内容与规则)",被匹配字符串)的应用
    # # #
    # ------------------------------------------------------------
    '''
    #
    # import re
    #
    # a0 = re.search("(?P<age>d+)","asfd22af33asf555")
    # a1 = re.search("(?P<name>[a-z]+)","asfd22af33asf555")
    # a2 = re.search("(?P<name>[a-z]+)(?P<age>d+)","asfd22af33asf555")
    #
    # print(a0.group())
    # print(a0.group("age"))
    # print(a1.group("name"))
    # print(a2.group())
    # print(a2.group("name"), a2.group("age"))
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # 22
    # # 22
    # # asfd
    # # asfd22
    # # asfd 22
    # #
    # # Process finished with exit code 0
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 8、re.group("标签"),在re.search("(?P<标签>匹配内容与规则)",被匹配字符串)的应用
    # # #
    # ------------------------------------------------------------
    '''
    #
    # import re
    #
    # a0 = re.search("(?P<age>d+)","asfd22af33asf555")
    # a1 = re.search("(?P<name>[a-z]+)","asfd22af33asf555")
    # a2 = re.search("(?P<name>[a-z]+)(?P<age>d+)","asfd22af33asf555")
    #
    # print("a0.groups() :        ",a0.groups())
    # print("a0.groups("age") :   ",a0.groups("age"))
    # print("a1.groups("name") :  ",a1.groups("name"))
    # print("a2.groups() :        ",a2.groups())
    # print("a2.groups("name") :  ",a2.groups("name"),"a2.groups("age"):    ", a2.group("age"))
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # a0.groups() :         ('22',)
    # # a0.groups("age") :    ('22',)
    # # a1.groups("name") :   ('asfd',)
    # # a2.groups() :         ('asfd', '22')
    # # a2.groups("name") :   ('asfd', '22') a2.groups("age"):     22
    # #
    # # Process finished with exit code 0
    
    
    
    
    
    
    # 03  re模块之方法
    # 03  re模块之方法
    
    '''
    # ------------------------------------------------------------
    # # 9、re方法的使用
    # # # findall、search使用的比较多
    # # # march等用的比较少
    # ------------------------------------------------------------
    '''
    
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 10、re.match
    # # # re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,
    # # # match()就返回none。 相当于search方法加元字符^
    # # # 
    # # # re.match(pattern, string, flags=0)
    # # # pattern	匹配的正则表达式
    # # # string	要匹配的字符串。
    # # # flags	标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志
    # ------------------------------------------------------------
    '''
    #
    # import re
    # a = re.match("d+","asfd22sf33sfd4444")
    # a1 = re.match("d+","22sf33sfd4444")
    #
    # print(a)
    # print(a1)
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # None
    # # <_sre.SRE_Match object; span=(0, 2), match='22'>
    # #
    # # Process finished with exit code 0
    
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 11、re.match.group
    # # # 作用于re.search.group相同,见上面
    # ------------------------------------------------------------
    '''
    #
    # import re
    # a = re.match("d+","asfd22sf33sfd4444")
    # a1 = re.match("d+","22sf33sfd4444")
    #
    # print(a)
    # print(a1.group())
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # None
    # # 22
    # #
    # # Process finished with exit code 0
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 12、re.split
    # # # split 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:
    # # # 
    # # # re.split(pattern, string[, maxsplit=0, flags=0])
    # # # pattern	匹配的正则表达式
    # # # string	要匹配的字符串。
    # # # maxsplit	分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
    # # # flags	    标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
    # # #           参见:正则表达式修饰符 - 可选标志
    # ------------------------------------------------------------
    '''
    #
    # import re
    # a = re.split(" ","hello abc def")
    # a1 = re.split("[ |]","hello abc|def")
    # a2 = re.split("b","abc")
    # a3 = re.split("[b]","abc")
    #
    # # 先取出分隔字符“a”: "abc"-->"","bc"(说明abc左边没有字符,因此为空)
    # # 再取出分隔字符“b”: ("",)"bc"( 括号内表示原来的)-->"","","c"(说明bc左边没有字符,因此为空)
    # a4 = re.split("[ab]","abc")
    #
    # # 先取出分隔字符“a”: "asdabcdabcdassbs"-->("",)"sd","bcd","bcd","ssbs"
    # # 再取出分隔字符“b”: ("",)"sd","bcd","bcd","ssbs"--> ("",)"sd","","cd","","cd","ss","s"
    # a5 = re.split("[ab]","asdabcdabcdassbs")
    #
    # print("a    ",a)
    # print("a1   ",a1)
    # print("a2   ",a2)
    # print("a3   ",a3)
    # print("a4   ",a4)
    # print("a5"  ,a5)
    #
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # a     ['hello', 'abc', 'def']
    # # a1    ['hello', 'abc', 'def']
    # # a2    ['a', 'c']
    # # a3    ['a', 'c']
    # # a4    ['', '', 'c']
    # # a5 ['', 'sd', '', 'cd', '', 'cd', 'ss', 's']
    # #
    # # Process finished with exit code 0
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 13、re.sub
    # # # Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。
    # # # 
    # # # re.sub(pattern, repl, string, count=0, flags=0)
    # # # pattern : 正则中的模式字符串。
    # # # repl :    替换的字符串,也可为一个函数。
    # # # string :  要被查找替换的原始字符串。
    # # # count :   模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
    # ------------------------------------------------------------
    '''
    #
    # import re
    # a  = re.sub("d+","??","hello22abc33def44444")      # 连续整数看成一个整体,替换为两个“?”
    # a1 = re.sub("d","??","hello22abc33def44444")       # 一个整数替换为两个“?”
    #
    # a2 = re.sub("d+","??","hello22abc33def44444",1)
    # a3 = re.sub("d","??","hello22abc33def44444",1)
    #
    #
    # print("a    ",a)
    # print("a1   ",a1)
    # print("a2   ",a2)
    # print("a3   ",a3)
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # a     hello??abc??def??
    # # a1    hello????abc????def??????????
    # # a2    hello??abc33def44444
    # # a3    hello??2abc33def44444
    # #
    # # Process finished with exit code 0
    
    
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 14、re.subn
    # # # Python 的 re 模块提供了re.subn用于替换字符串中的匹配项。并且返回替换的次数
    # ------------------------------------------------------------
    '''
    #
    # import re
    # a  = re.subn("d+","??","hello22abc33def44444")      # 连续整数看成一个整体,替换为两个“?”
    # a1 = re.subn("d","??","hello22abc33def44444")       # 一个整数替换为两个“?”
    #
    # a2 = re.subn("d+","??","hello22abc33def44444",1)
    # a3 = re.subn("d","??","hello22abc33def44444",1)
    #
    #
    # print("a    ",a)
    # print("a1   ",a1)
    # print("a2   ",a2)
    # print("a3   ",a3)
    # #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # a     ('hello??abc??def??', 3)
    # # a1    ('hello????abc????def??????????', 9)
    # # a2    ('hello??abc33def44444', 1)
    # # a3    ('hello??2abc33def44444', 1)
    # #
    # # Process finished with exit code 0
    
    
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 15、re.compile
    # # # compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,
    # # # 供 match() 和 search() 这两个函数使用。
    # # # ===>>>只有少数使用的时候,使用该方式与不用,差别不大;但是在数量非常多的时候,能够非常
    # # # ===>>>显著的提高程序的运行效率,原因在于,compile提前进行的编译处理,以后用到的该方法都可以不用重新
    # # # ===>>>编译就可以使用
    # # #  
    # # # re.compile(pattern[, flags])
    # # # pattern : 一个字符串形式的正则表达式
    # # # flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:
    # # # re.I 忽略大小写
    # # # re.L 表示特殊字符集 w, W, , B, s, S 依赖于当前环境
    # # # re.M 多行模式
    # # # re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
    # # # re.U 表示特殊字符集 w, W, , B, d, D, s, S 依赖于 Unicode 字符属性数据库
    # # # re.X 为了增加可读性,忽略空格和 # 后面的注释
    # ------------------------------------------------------------
    '''
    #
    # import re
    # #
    # com_num = re.compile("d+")
    # a  = com_num.subn("??","hello22abc33def44444")      # 连续整数看成一个整体,替换为两个“?”
    # a1 = com_num.subn("??","hello22abc33def44444")       # 一个整数替换为两个“?”
    #
    # a2 = com_num.subn("??","hello22abc33def44444",1)
    # a3 = com_num.subn("??","hello22abc33def44444",1)
    #
    #
    # print("a    ",a)
    # print("a1   ",a1)
    # print("a2   ",a2)
    # print("a3   ",a3)
    # #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # a     ('hello??abc??def??', 3)
    # # a1    ('hello????abc????def??????????', 9)
    # # a2    ('hello??abc33def44444', 1)
    # # a3    ('hello??2abc33def44444', 1)
    # #
    # # Process finished with exit code 0
    #
    
    
    
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 15、re.finditer
    # # # 和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
    # # # 
    # # # re.finditer(pattern, string, flags=0)
    # # # pattern	匹配的正则表达式
    # # # string	要匹配的字符串。
    # # # flags	标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表
    # # # 达式修饰符 - 可选标志
    # ------------------------------------------------------------
    '''
    #
    # import re
    # a  = re.finditer("d+","hello22abc33def44444")      # 连续整数看成一个整体,替换为两个“?”
    # a1 = re.finditer("d","hello22abc33def44444")       # 一个整数替换为两个“?”
    #
    # a2 = re.finditer("d+","hello22abc33def44444")
    # a3 = re.finditer("d","hello22abc33def44444")
    #
    #
    # print("a    ",a,a.__next__(),"---->>",next(a).group())
    # print("a1   ",a1,a1.__next__()," ---->>",next(a1).group())
    # print("a2   ",a2,a2.__next__(),"---->>",next(a2).group())
    # print("a3   ",a3,a3.__next__()," ---->>",next(a3).group())
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # a     <callable_iterator object at 0x0000000002971278> <_sre.SRE_Match object; span=(5, 7), match='22'> ---->> 33
    # # a1    <callable_iterator object at 0x0000000002956E10> <_sre.SRE_Match object; span=(5, 6), match='2'>  ---->> 2
    # # a2    <callable_iterator object at 0x00000000039C7FD0> <_sre.SRE_Match object; span=(5, 7), match='22'> ---->> 33
    # # a3    <callable_iterator object at 0x00000000039C7F98> <_sre.SRE_Match object; span=(5, 6), match='2'>  ---->> 2
    # #
    # # Process finished with exit code 0
    
    
    
    
    
    
    
    '''
    # ------------------------------------------------------------
    # # 16、findall、search在计算表达式中的应用
    # # # 使用search 能逐次的将计算表达式中的内容取出来,清晰明了
    # # # 使用findall一次性将计算表达式中的内容取出来
    # # # 相比之下,在计算表达式上,search更合适一些
    # ------------------------------------------------------------
    '''
    #
    # import re
    # s = "12+(34*6+2-5*(10-2*3)+(4*4+4)"
    # a = re.findall("([^()]+)",s)
    # a1 = re.search("([^()]+)",s)
    #
    # print("a    ",a)
    # print("a1   ",a1,"  group方法:",a1.group())
    #
    # # D:Anaconda3python.exe D:/C_cache/py/day23-re_logging_hashlib_MoKuaiDaoRu/day23_1_re_.py
    # # a     ['(10-2*3)', '(4*4+4)']
    # # a1    <_sre.SRE_Match object; span=(13, 21), match='(10-2*3)'>   group方法: (10-2*3)
    # #
    # # Process finished with exit code 0
    
    
    

      

    
    

    
    

    
    

    
    

  • 相关阅读:
    BZOJ3669
    HDU3726
    BZOJ3282
    BZOJ2843
    Link/cut Tree
    Codeforces396A
    LOJ6277~6285 数列分块入门
    Codeforces446C
    Codeforces475D
    Codeforces103D
  • 原文地址:https://www.cnblogs.com/jyfootprint/p/9449454.html
Copyright © 2011-2022 走看看