python正则表达式使用实例 正则表达式测试工具( 三 )


而match函数是要从头开始匹配,而字符串开头多了个字母a,所以无法匹配,fullmatch函数需要完全相同,故也不匹配!
案例2:

python正则表达式使用实例 正则表达式测试工具

案例2删除了text最开头的字母a,这样match函数就可以匹配啦,而fullmatch函数依然不能完全匹配!
案例3:
python正则表达式使用实例 正则表达式测试工具

案例3中,我们只留下一段文字,并且与正则表达式一致;这时fullmatch函数终于可以匹配了 。
完整案例:
python正则表达式使用实例 正则表达式测试工具

注意:查找 一个匹配项 返回的都是一个匹配对象(Match) 。
2.查找多个匹配项讲完查找一项,现在来看看查找多项吧,查找多项函数主要有:findall函数与finditer函数:
  1. findall: 从字符串任意位置查找,返回一个列表
  2. finditer:从字符串任意位置查找,返回一个迭代器
两个方法基本类似,只不过一个是返回列表,一个是返回迭代器 。我们知道列表是一次性生成在内存中,而迭代器是需要使用时一点一点生成出来的,内存使用更优 。
python正则表达式使用实例 正则表达式测试工具

如果可能存在大量的匹配项的话,建议使用finditer函数,一般情况使用findall函数基本没啥影响 。
3.分割re.split(pattern, string, maxsplit=0, flags=0)函数:用pattern分开 string ,maxsplit表示最多进行分割次数,flags表示模式,就是上面我们讲解的常量!
python正则表达式使用实例 正则表达式测试工具

注意:str模块也有一个 split函数 ,那这两个函数该怎么选呢?str.split函数功能简单,不支持正则分割,而re.split支持正则 。
关于二者的速度如何? 猪哥实际测试了一下,在相同数据量的情况下使用re.split函数与str.split函数执行次数与执行时间对比图:
python正则表达式使用实例 正则表达式测试工具

通过上图对比发现,1000次循环以内str.split函数更快,而循环次数1000次以上后re.split函数明显更快,而且次数越多差距越大!
所以结论是:在 不需要正则支持 且 数据量和数次不多 的情况下使用str.split函数更合适,反之则使用re.split函数 。
注:具体执行时间与测试数据有关!
4.替换替换主要有sub函数与subn函数,他们功能类似!
先来看看sub函数的用法:
re.sub(pattern, repl, string, count=0, flags=0)函数参数讲解:repl替换掉string中被pattern匹配的字符, count表示最大替换次数,flags表示正则表达式的常量 。
值得注意的是:sub函数中的入参:repl替换内容既可以是字符串,也可以是一个函数哦!如果repl为函数时,只能有一个入参:Match匹配对象 。
python正则表达式使用实例 正则表达式测试工具

re.subn(pattern, repl, string, count=0, flags=0)函数与re.sub函数功能一致,只不过返回一个元组 (字符串, 替换次数) 。
python正则表达式使用实例 正则表达式测试工具

5.编译正则对象compile函数 与 template函数将正则表达式的样式编译为一个 正则表达式对象 (正则对象Pattern),这个对象与re模块有同样的正则函数(后面我们会讲解Pattern正则对象) 。
python正则表达式使用实例 正则表达式测试工具

而template函数与compile函数类似,只不过是增加了我们之前说的re.TEMPLATE模式,我们可以看看源码 。

推荐阅读