前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python正则表达式零宽断言

python正则表达式零宽断言

作者头像
灯珑LoGin
发布2022-10-31 09:36:31
4560
发布2022-10-31 09:36:31
举报
文章被收录于专栏:龙进的专栏

零宽断言就是一种零宽度的匹配,它匹配的内容不会保存到匹配结果中。表达式的匹配内容只是代表了一个位置而已。比如说,标明某个字符的右边界是怎样的构造。

字符

描述

?=

零宽度正预测先行断言,它断言自身出现位置的后面可以匹配后面跟的表达式

?<=

零宽度正回顾后发断言,它断言自身出现位置的前面可以匹配后面跟的表达式

?!

零宽度负预测先行断言,它断言自身出现位置的后面不可以匹配后面跟的表达式

?<!

零宽度负回顾后发断言,它断言自身出现位置的前面不可以匹配后面跟的表达式

乍一看上面这个表格,脑子都大了。这零宽断言到底是啥?我怎么这么蒙啊?

必须承认的是,零宽断言的确是有点难理解,所以还是得结合代码来进行思考。

代码语言:javascript
复制
import re

s = r'eating apple seeing paper watching movie'

m1 = re.findall(r'(\b\w+?)ing', s)
print(m1)

m2 = re.findall(r'(.+?)(?=ing)', s)
print(m2)

m3 = re.findall(r'(.+?)(?<=ing)', s)
print(m3)

s = 'unite one unethical ethics use unite ultimate'

m4 = re.findall(r'\b(?!un)\w+\b', s)
print(m4)

m5 = re.findall(r'(?<! [a-z])\d{3,}', 'abc123, 123, 4567')
print(m5)

执行结果

代码语言:javascript
复制
['eat', 'see', 'watch']
['eat', 'ing apple see', 'ing paper watch']
['eating', ' apple seeing', ' paper watching']
['one', 'ethics', 'use', 'ultimate']
['123', '123', '4567']

从代码和执行结果来看,再结合思考,就可以更好的理解零宽断言到底是啥东西了。嗯就是那种很微妙的感觉。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年9月1日20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档