目录
1.特殊字符
2.转义字符
3.常用方法
4.标志符号
5.示例
1.match和findall的区别
2.fullmatch方法的理解
3.finditer方法的理解
4.sub方法的理解
5.subn方法的理解
6.split方法的理解
1.特殊字符
在字符串开头运用正则;
返回结果为Match对象,没有匹配时返回None
对整个字符串运用正则
返回结果为Match对象,没有匹配时返回None
扫描字符串,查看符合正则的部分
返回结果为Match对象,没有匹配时返回None
sub(pattern,repl,string,count=0,flags=0)
用指定的字符串替换原字符串中符合正则的部分
返回结果为替换后的字符串
用指定的字符串替换原字符串中符合正则的部分
返回结果为元组,元组第一个元素为替换后的字符串,元组第二个正则满足匹配的次数
根据正则将字符串拆分为列表
返回结果为列表,如果设定了maxsplit标识最多被分为maxsplit次
查询字符串中所有符合正则的部分
返回结果为列表,列表元素为符合正则的部分。当正则中有组时,列表元素为一个个符合组的元组,元组中的元素为每个符合组的元素
返回一个Match对象的迭代器,用来获取每个匹配的对象。
将一个模式变为一个Pattern对象
返回结果为一个Pattern对象
#导入re包 import re #原字符串 source ='我的电话号码是13576878907' #match方法 patter_match ='我.{3,4}' result_match = re.match(patter_match,source) print("re.match方法的结果数据类型是{}".format(type(result_match))) print("re.match方法的结果是: {}.".format(result_match)) print("Match对象对应的匹配结果是{}".format(result_match.group())) print("*******************************************************") patter_match_failed='d{11}' result_match_failed=re.match(patter_match_failed,source) print("re.match方法的结果数据类型是{}".format(type(result_match_failed))) print("re.match方法的结果是{}".format(result_match_failed)) print("*******************************************************") #search方法 patter_search='d{11}' result_search=re.search(patter_match_failed,source) print("re.search方法的结果数据类型是{}".format(type(result_search))) print("re.search方法的结果是{}".format(result_search)) print("Match对象对应的匹配结果是{}".format(result_search.group())) patter_search_failed='^你.*$' result_search_failed=re.search(patter_search_failed,source) print("re.search方法的结果数据类型是{}".format(type(result_search_failed))) print("re.search方法的结果是:{}".format(result_search_failed)) print("*******************************************************") #findall方法 result_findall=re.findall(patter_match_failed,source) print("re.findall方法的结果数据类型是{}".format(type(result_findall))) print("re.findall方法的结果是{}".format(result_findall)) patter_findall_failed='^你.*$' result_findall_failed=re.findall(patter_findall_failed,source) print("re.findall方法的结果数据类型是{}".format(type(result_findall_failed))) print("re.findall方法的结果是:{}".format(result_findall_failed))
运行结果:
re.match方法的结果数据类型是re.match方法的结果是: . Match对象对应的匹配结果是我的电话号 ******************************************************* re.match方法的结果数据类型是 re.match方法的结果是None ******************************************************* re.search方法的结果数据类型是 re.search方法的结果是 Match对象对应的匹配结果是13576878907 re.search方法的结果数据类型是 re.search方法的结果是:None ******************************************************* re.findall方法的结果数据类型是 re.findall方法的结果是['13576878907'] re.findall方法的结果数据类型是 re.findall方法的结果是:[]
从结果中可以看出match方法在匹配正则时,必须从文本开头开始进行查询,否则查询不到,并且match方法的返回值为Match对象,当查询不到时返回值为None。Match对象通过group方法获取的详细的匹配内容。
search方法在匹配正则时,不限制匹配的位置,返回值为Match对象,当没有内容匹配正则时,返回None。
findall方法在匹配正则时,不限制匹配的位置。返回值为列表,列表中元素是匹配的内容,当没有内容匹配正则时,返回空列表。
2.fullmatch方法的理解import re patter_fullmatch='我.*' result_fullmatch=re.fullmatch(patter_fullmatch,source) print("re.fullmatch方法的结果数据类型是{}".format(type(result_fullmatch))) print("re.fullmatch方法的结果是{}".format(result_fullmatch)) patter_fullmatch_failed ='我.{3,4}' result_fullmatch_failed=re.fullmatch(patter_match_failed,source) print("re.fullmatch方法的结果数据类型是{}".format(type(result_fullmatch_failed))) print("re.fullmatch方法的结果是{}".format(result_fullmatch_failed))
运行结果:
re.fullmatch方法的结果数据类型是re.fullmatch方法的结果是 re.fullmatch方法的结果数据类型是 re.fullmatch方法的结果是None
从结果可以看出只有正则能否完全匹配整个字符串时才会有Match对象返回值,否则返回None。
3.finditer方法的理解#finditer方法 import re source='我的电话号码是13576878907' patter_finditer='d{11}' result_finditer=re.finditer(patter_finditer,source) print("re.finditer方法的结果数据类型是{}".format(type(result_finditer))) print("re.finditer方法的结果是{}".format(result_finditer)) for m in result_finditer: print("迭代器中元素的类型是{}".format(type(m))) print("匹配的文本起始位置{}".format(m.start())) print("匹配的文本结束位置{}".format(m.start())) print("匹配的文本内容是{}".format(source[m.start():m.end()])) print("匹配的文本内容是{}".format(m.group()))
运行结果:
re.finditer方法的结果数据类型是re.finditer方法的结果是 迭代器中元素的类型是 匹配的文本起始位置7 匹配的文本结束位置7 匹配的文本内容是13576878907 匹配的文本内容是13576878907
从结果中可以看出re.finditer方法返回的结果是一个包含Match对象的迭代器,可以通过Match对象的start和end方法求出字符串中符合正则的位置,并通过切片或者group方法求得满足正则的内容。
4.sub方法的理解#sub方法 import re source = '我的 电话 号码是 13576878907' patter_sub='s*' result_sub=re.sub(patter_sub,'',source) print("re.sub方法的结果数据类型是{}".format(type(result_sub))) print("re.sub方法的结果是{}".format(result_sub)) result_sub_2=re.sub(patter_sub,'',source,count=6) print("re.sub方法count参数的结果是{}".format(result_sub_2))
运行结果
re.sub方法的结果数据类型是re.sub方法的结果是我的电话号码是13576878907 re.sub方法count参数的结果是我的电话号码是 13576878907
从结果中可以看出re.sub方法返回的结果是一个替换后的字符串,count参数的作用在于限定替换前n个符合正则的内容。
5.subn方法的理解#subn方法 import re source = '我的 电话 号码是 13576878907' patter_subn='s*' result_subn=re.subn(patter_subn,'',source) print("re.subn方法的结果数据类型是{}".format(type(result_subn))) print("re.subn方法的结果是{}".format(result_subn)) result_subn_2=re.subn(patter_subn,'',source,6) print("re.subn方法的结果是{}".format(result_subn_2))
运行结果:
re.subn方法的结果数据类型是re.subn方法的结果是('我的电话号码是13576878907', 22) re.subn方法的结果是('我的电话号码是 13576878907', 6)
从结果中可以看出re.subn方法返回的结果是一个元组,元组的第一个元素是替换后的字符串,第二个元素是正则匹配的次数。count参数的作用用于限制替换前n次正则匹配的字符。
6.split方法的理解#split方法 source = '我的 电话 号码是 13576878907' patter_split='s+' result_split=re.split(patter_split,source) print("re.split方法的结果数据类型是{}".format(type(result_split))) print("re.split方法的结果是{}".format(result_split)) result_subn_2=re.split(patter_split,source,maxsplit=2) print("re.split方法的结果是{}".format(result_subn_2))
运行结果:
re.split方法的结果数据类型是re.split方法的结果是['我的', '电话', '号码是', '13576878907'] re.split方法的结果是['我的', '电话', '号码是 13576878907']
从结果中可以看出re.split方法的返回值为一个列表,列表中的元素是在满足正则匹配处分隔的元素。maxsplit参数的作用在于限制分隔的次数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)