re模块

作者: 伪琴客 | 来源:发表于2018-05-09 13:52 被阅读0次

    1、re.match函数

    原型:match(pattern, string, flags=0)

    参数:patter: 匹配的正则表达式

                string: 要匹配的字符串

                flags:标志位,用于控制正则表达式的匹配方式,值如下:

                        re.I    忽略大小写

                        re.L    做本地户识别

                        re.M    多行匹配,影响^和$

                        re.S    是.匹配包括换行符在内的所有字符

                        re.U    根据Unicode字符集解析字符,影响\w  \W  \b  \B

                        re.X    使我们以更灵活的格式理解正则表达式

    功能:尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,返回None。扫描整个字符串,返回从起始位置成功的匹配

    2、re.search函数

    原型:search(pattern, string, flags=0)

    参数:patter: 匹配的正则表达式

                string: 要匹配的字符串

                flags:标志位,用于控制正则表达式的匹配方式

    功能:扫描整个字符串,并返回第一个成功的匹配

    3、re.findall函数

    原型:findall(pattern, string, flags=0)

    参数:patter: 匹配的正则表达式

                string: 要匹配的字符串

                flags:标志位,用于控制正则表达式的匹配方式

    功能:扫描整个字符串,并返回结果列表

    4、re.split()字符串切割

    str1 ="This        is    a   test"

    print(re.split(r" +", str1))

    5、re.finditer函数

    原型:finditer(pattern, string, flags=0)

    参数:patter: 匹配的正则表达式

                string: 要匹配的字符串

                flags:标志位,用于控制正则表达式的匹配方式

    功能:与findall类似,扫描整个字符串,返回的是一个迭代器

    6、字符串的替换和修改

    re.sub(pattern, repl, string, count=0)

    re.subn(pattern, repl, string, count=0)

            pattern:  正则表达式(规则)

            repl:    指定的用来替换的字符串

            string:  目标字符串

            count:    最多替换次数

    功能:在目标字符串中以正则表达式的规则匹配字符串,再把他们替换成指定的字符串。可以指定替换的次数,如果不指定,替换所有的匹配字符串

    区别:前者返回一个被替换的字符串,后者返回一个元组,第一个元素被替换的字符串,第二个元素表示被替换的次数

    7、分组

    除了简单的判断是否匹配之外,正则表达式还有提取子串的功能。用()表示的就是提取分组

    str1 ="010-53247654"

    m = re.match(r"(?P\d{3})-(?P\d{8})", str1)

    #使用序号获取对应组的信息,group(0)一直代表的原始字符串

    print(m.group(0))

    print(m.group(1))

    print(m.group("first"))

    print(m.group(2))

    #查看匹配的各组的情况

    print(m.groups())

    8、编译:

    当我们使用正则表达式时,re模块会干两件事

    (1)、编译正则表达式,如果正则表达式本身不合法,会报错

    (2)、用编译后的正则表达式去匹配对象

    compile(pattern, flags=0)

    pattern:要编译的正则表达式

    示例:

    pat =r"^1(([3578]\d)|(47))\d{8}$"

    print(re.match(pat, "13687872525"))

    #编译成正则对象

    re_telephon = re.compile(pat)

    print(re_telephon.match("13687872525"))

    相关文章

      网友评论

          本文标题:re模块

          本文链接:https://www.haomeiwen.com/subject/gdbnrftx.html