re模块

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模块)