re模块的深入

import  re

'''
字符串切割

'''

str1= "allen        is a good man"
print(str1.split())
print(re.split((r" +"),str1))



'''
re.finditer函数
原型:finditer(pattern, string, flags=0)
pattern: 匹配的正则表达式
string: 要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式,值如下
re.I    忽略大小写
re.L    做本地话识别
re.M    多行匹配,影响^和$
re.S    是.匹配包括换行符在内的所有字符
re.U    根据Unicode字符集解析字符,影响\w  \W  \b   \B
re.X    使我们以更灵活的格式理解正则表达式
参数:
功能:与findall 类似,扫描整个字符串,返回的是一个迭代器
'''
str3 = "allen is a good man !allen is a nice man! allen is a handesome man"
d =re.finditer(r"allen ",str3)
while 1:
    try:
        l = next(d)
        print(d)
    except StopIteration as e :
        break



'''
字符串的替换和修改
def sub(pattern, repl, string, count=0, flags=0):
def subn(pattern, repl, string, count=0, flags=0):
pattern: 正则表达式(规则)
repl:    指定的用来替换的字符串
string:  目标字符串   
count:   最多替换次数
flags:   标志位
功能:在目标字符串中以正则表达式的规则匹配字符串,
再把它们替换成制定的字符串。可以指定替换的次数,
如果不指定,默认替换所有匹配的字符串

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

'''

str5 = "allen is a good good good man"
print(re.sub(r"(good)","nice",str5))
print(re.subn(r"(good)","nice",str5,count=1))


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

str6 = "allen is a good man !allen is a nice man! allen is a handesome man"

str3 = "010-53247654"
# m = re.match(r"((\d{3})-(\d{8}))",str3)
m = re.match(r"(?P<first>\d{3})-(?P<last>\d{8})",str3)
print(m)
print(m.group(0))
print(m.group(1))
print(m.group(2))
# print(m.group(3))
print(m.groups())


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

1、编译正则表达式,如果正则表达式本身不合法,会报错
2、用编译后的正则表达式去匹配对象


compile (pattern,flags= 0)


'''



pat = r"^1[34578]\d{9}$"
#编译成正则对象
re_telephon = re.compile(pat)
print(re_telephon.match("18332191389"))



#re模块调用
#re对象调用
#re.match(pattern, string, flags=0)
#re_telephon.match(string)
#re.search(pattern, string, flags=0)
#re_telephon.search(sting)
# re.findall(pattern, string, flags=0)
# re_telephon.findall(string)
#re.finditer(pattern, string, flags=0)
#re_telephon.finditer(string)
#re.split(pattern, string, maxsplit=0, flags=0)
#re_telephon.split(string, maxsplit=0)
#re.sub(pattern, repl, string, count=0, flags=0)
#re_telephon.sub(repl, string, count=0)
#re.subn(pattern, repl, string, count=0, flags=0)
#re_telephon.subn(repl, string, count=0)











猜你喜欢

转载自blog.csdn.net/qq_41856814/article/details/89489082