专栏名称: Python程序员
最专业的Python社区,有每日推送,免费电子书,真人辅导,资源下载,各类工具。我已委托“维权骑士”(rightknights.com)为我的文章进行维权行动
目录
相关文章推荐
Python爱好者社区  ·  生成式AI,彻底爆了! ·  18 小时前  
Python爱好者社区  ·  64k!确实可以封神了! ·  2 天前  
Python爱好者社区  ·  华为目标院校白名单(2025最新版) ·  3 天前  
Python爱好者社区  ·  强的离谱!CNN,yyds ·  昨天  
Python开发者  ·  外网热议:为什么 DeepSeek ... ·  23 小时前  
51好读  ›  专栏  ›  Python程序员

Python 的正则表达式彩蛋

Python程序员  · 公众号  · Python  · 2017-06-04 12:36

正文

请到「今天看啥」查看全文


这个库有一点我觉得设计的挺神奇的,它的构造(compiler)和解析(parser)函数是用 Python 写的,但是匹配(matcher) 函数是用 C 写的。这意味着如果我们愿意的话,就可以将解析器的内部结构传递给编译器,从而完全绕过正则表达式的解析。虽然文档里没写,但事实上确实可以这么干。

还有很多这种例子,但是在(官方)文档中的正则部分都没有收录,或者没讲清楚,所以下面我就给大家演示几个例子,让你见识见识 Python 的正则库到底有多炫酷。

迭代匹配

如果要说在 Python 的正则库当中哪个特性是最大的亮点,那毫无疑问,肯定是把 matching 和 searching 两种功能区别开。这一点上,很多其它正则表达式引擎都没有做到。在使用 match 函数进行匹配的时候,你可以专门指定一个起始索引位置,让它从此位置开始匹配。

也就是说,你可以这么写:

这在写词法分析的时候就非常实用,因为你可以一直用 “^” 符号来表示行首,然后只要调整后面的 pos 索引参数就可以一直匹配下去。同时,有了这个功能,我们再也不需要自己手动分割字符串来匹配了,一下就省掉大量的内存分配和字符串复制的过程(况且 Python 并不擅长这个)。


除了 match 函数, Python 还提供了 search 函数,它能自动跳过字符串头,直到成功匹配:







请到「今天看啥」查看全文


推荐文章
Python爱好者社区  ·  生成式AI,彻底爆了!
18 小时前
Python爱好者社区  ·  64k!确实可以封神了!
2 天前
Python爱好者社区  ·  华为目标院校白名单(2025最新版)
3 天前
Python爱好者社区  ·  强的离谱!CNN,yyds
昨天
物业观察  ·  物业夏季的重点防疫工作标准
8 年前
金乡大蒜辣椒国际交易市场  ·  胜蒜之道,在涨跌之外
7 年前
Python爱好者社区  ·  Python的数据分析: numpy和pandas入门
7 年前