re模块

常用函数:
  import re
    re.findall()     :(正则,str)匹配str中所有符合正则的字符串并以列表返回
    re.search()      :(正则,str)匹配str中第一个符合规则的字符串返回结果集(没有则为None),用.group()取值(没有则报错)
    re.match()       :(正则,str)开头匹配str中符合正则的字符串返回结果集(没有则为None),用.group()取值(没有则报错),可以直接用re.search(^正则,str)取代

    re.finditer()   :(正则,str)匹配str中所有符合正则的字符串并返回一个迭代器,迭代器元素为结果集,用.group()取值节约内存

    re.compile()    :(正则)编译正则表达式,返回值可以多次使用,上述匹配规则函数均可使用:par=re.compile("[1-9]\b{10}");par.findall(str)节省时间

    re.sub()        :(正则,newStr,str,count)匹配str中符合正则的count个字符串并用newStr替换,返回替换后的字符串
    re.subn()       :(正则,newStr,str)匹配str中符合正则的字符串并用newStr替换,返回替换后的字符串和个数组成的元组
    re.split()      :(正则,str)匹配str中符合正则的字符串并以此分割成列表



分组优先显示:()[取消分组优先直接在()前边加上(?: )即可]
    findall中:
        par=re.compile(">.*<")
        ret=par.findall(r"<h1>hahaha<\h1>")
        print(ret)     # ['>hahaha<']

        par=re.compile(">(.*)<")
        ret=par.findall(r"<h1>hahaha<\h1>")
        print(ret)     #['hahaha']
    split()中:
        ret=re.split("\d+","23nihao34kili2290")
        print(ret)  # ['', 'nihao', 'kili', '']

        et=par.split("(\d+)","23nihao34kili2290")
        print(ret)  # ['', '23', 'nihao', '34', 'kili', '2290', '']

    search()中(不受影响,但可以分组命名或按索引取值(从1开始)):
        ret = re.search(r'<\w+>\w+<\\\w+>',r'<title>qqxing<\title>')
        分组不影响:
        ret = re.search(r'<(\w+)>(\w+)<\\(\w+)>',r'<title>qqxing<\title>')
        print(ret.group(0))  # <title>qqxing<\title>不受到分组的影响默认为
        print(ret.group(1))  #title
        print(ret.group(2))  #qqxing

        分组命名:
        ret = re.search(r'<(?P<ti>\w+)>(?P<content>\w+)<\\(\w+)>',r'<title>qqxing<\title>')
        print(ret.group())
        print(ret.group("ti"))#title
        print(ret.group("content"))  #qqxing

        分组命名并引用:
        ret = re.search('<(?P<tag>\w+)>.*</(?P=tag)>','<h1>wahaha</h2></h1></h3>')
        print(ret.group()) #<h1>wahaha</h2></h1>

 

posted @ 2019-08-05 17:34  笑得好美  阅读(181)  评论(0编辑  收藏  举报