Python 正则表达式的高级用法

 更新时间:2016年12月04日 10:25:23   投稿:hebedich  
作为一个概念而言,正则表达式对于Python来说并不是独有的。但是,Python中的正则表达式在实际使用过程中还是有一些细小的差别。本文是一系列关于Python正则表达式文章的其中一部分。

对于Python来说,学习正则就要学习模块re的使用方法。本文将展示一些大家都应该掌握的高级技巧。

编译正则对象

re.compile函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。用法上略有区别,举个例子, 匹配一个字符串可用如下方式:

如果使用compile,将变成:

为什么要这么用呢?其实就是为了提高正则匹配的速度,重复利用正则表达式对象。我们对比一下2种方式的效率:

可以看到第二种方式要快很多。在实际的工作中你会发现越多的使用编译好的正则表达式对象,效果就越好。

分组(group)

你可能已经见过对匹配的内容进行分组的用法了:

通过对要匹配的对象添加括号,就可以精确的对应符合的结果了。我们还可以进行嵌套的分组:

分组可以满足需求,但是有时候可读性很差,那可以对分组进行命名:

现在可读性就非常高了。

字符串匹配

学过sed的同学可能见过如下替换用法:

这个\1表示前面正则匹配到的结果。上面的sed也就是给匹配到的结果加上中括号。

在re模块中也存在这样的用法:

用命名分组也是可以的:

附近匹配(Look around)

re模块也支持附近匹配,看看例子就懂了:

正则匹配的时候使用函数

之前我们看到的大部分内容都是匹配的是一个表达式,但是有时候需求要复杂得多,尤其是在替换的时候。

举个例子,通过Slack的API能获取聊天记录,比如下面这句:

其中<@U1EAT8MG9>和<@U0K1MF23Z>是2个真实的用户,但是被Slack封装了,需要通过其他接口获取这个对应关系,

其结果类似这样:

在解析对应关系之后,还希望吧尖括号也去掉,替换后的结果是「@xiaoming, @laolin 嗯 确实是这样的 」

用正则怎么实现呢?

所以pattern当然也可以是一个函数

相关文章

  • Python贪吃蛇小游戏实例分享

    Python贪吃蛇小游戏实例分享

    这篇文章主要为大家详细介绍了Python贪吃蛇小游戏实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • python中数据爬虫requests库使用方法详解

    python中数据爬虫requests库使用方法详解

    本篇文章主要介绍了python中数据爬虫requests库使用方法详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 基于pandas中expand的作用详解

    基于pandas中expand的作用详解

    今天小编就为大家分享一篇基于pandas中expand的作用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • np.where在多维数组的应用方式

    np.where在多维数组的应用方式

    这篇文章主要介绍了np.where在多维数组的应用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python+Appium实现自动抢微信红包

    Python+Appium实现自动抢微信红包

    不知从何时开始微信红包横空出世,对于网速和手速慢的人只能在一旁观望,做为python的学习者就是要运用编程解决生活和工作上的事情。于是我用python解决我们的手速问题python实现自动抢微信红包,至于网速慢得那就只能自己花钱提升了。
    2021-05-05
  • Python开发之快速搭建自动回复微信公众号功能

    Python开发之快速搭建自动回复微信公众号功能

    这篇文章主要介绍了Python开发之快速搭建自动回复微信公众号功能的相关资料,需要的朋友可以参考下
    2016-04-04
  • 总结Python常用的魔法方法

    总结Python常用的魔法方法

    今天带大家学习Python的相关知识,文中对Python常用的魔法方法作了非常详细的总结,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • Python中一些深不见底的“坑”

    Python中一些深不见底的“坑”

    这篇文章主要给大家介绍了关于Python中一些深不见底的“坑”,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • Python中os和shutil模块实用方法集锦

    Python中os和shutil模块实用方法集锦

    这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下
    2014-05-05
  • Python:一行代码,导入Python所有库

    Python:一行代码,导入Python所有库

    在本篇内容里小编给大家分享如何用一行代码,导入Python所有库,有需要的朋友们可以学习下,希望能够给你带来帮助
    2021-10-10

最新评论