Python正则表达式完全指南|即时
本篇文章将深入探讨python的一项强大工具:正则表达式。正则表达式是一个强大的文本处理工具,可以用来匹配,搜索,替换和解析文本。我们将逐步展示如何在Python中使用正则表达式,包括其基本语法,常见用法和一些高级技巧。而在最后的“one more thing”部分,我们将探索一个不为人知但又非常有用的正则表达式的技巧。
(资料图片)
简单正则表达式匹配在Python中,re
模块提供了正则表达式的支持。我们先从最简单的字符匹配开始。
import re# 检查字符串是否包含字母"a"txt = "Hello, world!"match = re.search("a", txt)print(match) # 输出:None,因为"a"没有在字符串中
在这个例子中,我们使用了re.search()
函数来查找字符串中是否包含"a"。这是最基础的字符匹配,但已经可以看出正则表达式的用处。例如,你可以用这种方式检查一个电子邮件地址是否包含"@"。
正则表达式的真正威力在于其元字符的使用,比如.
,*
,?
,[]
等等。下面的例子展示了如何使用.
(点)元字符匹配任何字符(除了新行)。
txt = "Hello, world!"match = re.search("H.llo", txt)print(match.group()) # 输出:Hello
在这个例子中,.
字符匹配了"e",使得"H.llo"可以匹配"Hello"。
有时我们希望匹配的是一类字符,而不是单个字符。比如,我们可能想要匹配任何数字。Python的正则表达式提供了预定义的字符集来实现这种功能。\d
就代表任何数字。
txt = "123 Hello, world!"match = re.search("\d+", txt)print(match.group()) # 输出:123
在这个例子中,\d+
匹配了一串数字"123"。
我们可以使用圆括号()
创建子模式或组,并使用group()
方法来捕获这些组。
txt = "123 Hello, world!"match = re.search("(\d+) (Hello),", txt)print(match.group(1)) # 输出:123print(match.group(2)) # 输出:Hello
使用正向先行断言这是一个高级技巧,它允许我们在不消耗字符的情况下进行匹配。例如,我们可能想找出所有以句号结束但不包含句号的句子。
txt = "Hello. My name is Python. Nice to meet you."matches = re.findall(".*?(?=\\.)", txt)for match in matches: print(match) # 输出:Hello,My name is Python,Nice to meet you
在这个例子中,.*?(?=\\.)
匹配了所有以句号结束的句子,但并没有消耗句号。
我们之前讨论过预定义的字符集,比如\d
。但有时我们可能需要自定义字符集,我们可以使用方括号[]
来达成这个目标。例如,我们可以创建一个只包含小写字母的字符集。
txt = "Hello, World!"match = re.search("[a-z]+", txt)print(match.group()) # 输出:ello
在这个例子中,[a-z]+
匹配了一串连续的小写字母"ello"。注意"Hello"的首字母"H"由于是大写,没有被匹配。
Python的正则表达式默认是贪婪的,这意味着它们会尽可能匹配更多的字符。但有时我们可能希望进行非贪婪匹配。我们可以通过在量词后面添加问号?
来实现这个功能。
txt = "12345"match = re.search("\d+?", txt)print(match.group()) # 输出:1
在这个例子中,\d+?
进行了非贪婪匹配,只匹配了一个数字"1"。
零宽断言允许我们在字符之间设置条件。比如,我们可以使用(?<=a)b
来匹配所有在"a"后面的"b"。
txt = "cab, dab"matches = re.findall("(?<=a)b", txt)for match in matches: print(match) # 输出:b,b
在这个例子中,(?<=a)b
匹配了所有在"a"后面的"b"。
如果你的程序需要多次使用同一个正则表达式,你可以将其编译为一个正则表达式对象。这可以提高代码的运行效率。
pattern = re.compile("\d+")txt = "123 Hello, world!"match = pattern.search(txt)print(match.group()) # 输出:123
在这个例子中,我们先编译了正则表达式\d+
,然后使用pattern.search()
方法来进行匹配。
到现在为止,我们已经探讨了Python正则表达式的基础知识。但是在这最后的"One More Thing"部分,我想分享一个不常被提及,但在处理复杂文本模式时非常有用的技巧:命名组。
命名组允许我们给匹配的组分配一个名字,然后在后面的代码中引用它。这在处理复杂的模式匹配时非常有用。
txt = "James: 1234567890"match = re.search("(?P\w+): (?P\d+)", txt)print(match.group("name")) # 输出:Jamesprint(match.group("phone")) # 输出:1234567890
在这个例子中,我们使用了命名组(?P
和(?P
来匹配名字和电话号码,并使用group()
方法来获取它们。
正则表达式是一个非常强大的工具,希望本篇文章能帮你掌握它在Python中的用法。
如有帮助,请多关注个人微信公众号:【Python全视角】TeahLead_KrisChang,10+年的互联网和人工智能从业经验,10年+技术和业务团队管理经验,同济软件工程本科,复旦工程管理硕士,阿里云认证云服务资深架构师,上亿营收AI产品业务负责人。
标签:
-
2022-05-23 16:13:32
上海奉贤等区开展常态化防疫压力测试 有序开放公交、公园、公共服务场所、公共街区商区<
本报上海5月21日电 (记者刘士安、曹玲娟)上海正在奉贤等区开展常态化防疫压力测试。在21日召开的上海市疫情防控工作新闻发布会上,奉
-
2022-05-23 16:13:32
“抗疫 宅家云课堂”,吸引沪上老同志观看50万人次<
由上海市委老干部局主办,上海市老干部大学、市科技助老服务中心承办的“抗疫 宅家云课堂”系列直播讲座自4月12日启动以来,深受老同
-
2022-05-23 16:13:32
“代跑腿”买药、开通绿色通道 丰台为管控区居民提供便捷医疗服务<
“真是太感谢了,解决了我的燃眉之急!”家住假日万恒社区的杨女士对前来送药的居委会工作人员说。 自5月17日6时起,丰台区对青塔街...
-
2022-05-23 16:13:32
上海嘉定:儿童计划免疫接种全部恢复,实行预约制<
在5月22日召开的上海市新冠肺炎疫情防控新闻发布会上,嘉定区副区长王浩介绍,从4月28日开始,嘉定在防范区逐步有序恢复老年人疫苗接种
-
2022-05-23 16:13:32
乡村振兴看新疆 | 种下红樱桃 结出“致富果”<
央广网阿图什5月22日消息(记者 罗成 通讯员 杨林)乡村振兴靠产业,产业发展靠特色。新疆阿图什市阿扎克镇麦依村积极引导农民因地制
-
2023-06-13 11:35:22
Python正则表达式完全指南|即时
**本篇文章将深入探讨python的一项强大工具:正则表达式。正则表达式是
-
2023-06-13 11:05:09
【新要闻】雨打芭蕉的诗句李商隐_雨打芭蕉的诗句
1、宋??蒋捷《一剪梅 舟过吴江》一片春愁待酒浇。2、江上舟摇,楼上帘
-
2023-06-13 10:47:23
中银证券:医药生物行业估值进入平稳区间 新周期扩张需要新的增长动力 世界新资讯
中银证券发布医药生物行业2023年中期策略称,医药生物板块经过近两年的
-
2023-06-13 10:00:55
一址多照场地使用证明 一址多照
1、同一地址作为二个及以上企业的住所登记注册。2、形成一个地址核发多
-
2023-06-13 10:00:35
当前热点-他拿着地球仪带孩子逛展会学地理
晨报讯(半岛晨报、39度视频记者陆瑶文 图) 6月11日,记者在大连
-
2023-06-13 09:19:15
陆军:昼夜实弹考核 提升遂行防空作战能力
如不能正常浏览请选用IE浏览器 天津北方网讯:陆军:昼夜实弹考核提
-
2023-06-13 08:48:18
2026年四大洲花样滑冰锦标赛落户北京
中新网6月13日电 据中国花样滑冰协会微信公众号消息,北京时间6月12日,国际滑冰联盟理事会决定将2026
-
2023-06-13 08:15:25
天天精选!东易日盛:公司AIGC技术成果都涉及空间计算的应用
东易日盛:公司AIGC技术成果都涉及空间计算的应用:东易日盛(002713)在互动平台上称,公司的AIGC技术成果
-
2023-06-13 07:22:39
小台芒和大台芒果的区别 小台芒和大台芒果的区别是什么
1、大小不同。2、大台芒和小台芒的品种相同,都是一个树上结的果。3、小台芒外观与大台农芒相似,小台芒又
-
2023-06-13 06:17:08
世界今亮点!成都燃气(603053):6月12日北向资金减持1.87万股
6月12日北向资金减持1 87万股成都燃气。近5个交易日中,获北向资金增持的有2天,累计净增持17 27万股。近20
-
2023-06-13 05:38:02
海尔云贷因“对外追收债权纠纷”成被执行人:涉及标的360万元!_视焦点讯
海尔云贷因“对外追收债权纠纷”成被执行人:涉及标的360万元!,百川,贷款,金控,海尔云贷,债权纠纷
-
2023-06-13 04:16:40
紧跟国有大行脚步,多家股份制银行下调存款利率
00:42紧跟国有大行的脚步,股份制银行6月12日集体“官宣”下调人民币存款挂牌利率。扬子晚报 紫牛新闻记者
-
2023-06-13 02:11:49
环球快讯:6月12日基金净值:博时军工主题股票A最新净值1.569,跌0.76%
6月12日,博时军工主题股票A最新单位净值为1 569元,累计净值为1 569元,较前一交易日下跌0 76%。历史数据
-
2023-06-13 01:49:38
安徽省省政府第64次常务会议
1、2015年12月14日,省长李锦斌主持召开省政府第64次常务会议,审议《安徽省水污染防治工作方案》。2、原则通过
-
2023-06-12 23:27:34
阿根廷决定不对我国自行车采取最终反倾销措施
证券时报e公司讯,商务部消息,6月6日,阿根廷经济部发布2023年第1012号公告,对原产于中国的自行车(车轮
-
2023-06-12 22:09:38
双胶纸跟铜版纸的区别 双胶纸比铜版纸贵吗_每日快播
1、价格相差基本上2000元 吨左右,克重不同,价格也不同。2、简单来说两者的区别就是铜板纸两面都有涂布,
-
2023-06-12 21:26:46
天天热讯:公募REITs市场小幅上行,行业再次掀起自购潮,又有新产品来了
《每日经济新闻》记者获悉,在连续遭遇“滑铁卢”并引发市场广泛关注之后,公募REITs在二级市场的表现终于
-
2023-06-12 20:52:21
沙井汽车站网上订票-天天时快讯
1、沙井汽车站可以网上订票。2、 深圳市沙井中心汽车客运站有限公司成立于1998年,位于宝安区沙井街道办1
-
2023-06-12 19:55:13
安徽省新东方矿山机电有限公司
1、安徽省新东方矿山机电有限公司-是与山东省济宁防爆电机厂合资兴建,总投资3000万元,主要产品有耙斗装
-
2023-06-12 19:07:37
当前报道:卫食健字查询官网(国食健字和卫食健字有什么区别)
来为大家解答以上问题。卫食健字查询官网,国食健字和卫食健字有什么区别这个很多人还不清楚,现在一起跟着
-
2023-06-12 18:48:56
【全球快播报】员工因“饭量太大”被解雇要求赔偿 法院:驳回
马路上有碰瓷,职场也有碰瓷吗?还真有,名叫“劳动碰瓷”。个别劳动者专门利用用人单位法律意识淡薄、用工
-
2023-06-12 18:39:10
焦点速看:e5430和q9400哪个好_e3400cpu和q9300哪个好
想必现在有很多小伙伴对于e3400cpu和q9300哪个好方面的知识都比较想要了解,那么今天小好小编就为大家收集
-
2023-06-12 18:10:03
三七互娱成立新公司 米哈游起诉游戏网站泄密|矩阵一周记_今日播报
索赔百万,米哈游起诉游戏网站泄密原神新版本天眼查App显示,近日,北京市海淀区人民法院向千钧万博(北京)
-
2023-06-12 17:18:28
“空中桥梁”助力“中国西班牙文化和旅游年”,东航恢复上海-马德里直飞航线达每周5班
今年恰逢中西建交50周年,中国西班牙文化和旅游年活动已于3月底在马德里开幕,全年将在当地举办文物展览、
-
2023-06-12 16:43:38
每日速讯:港市速睇 | 恒指午后转涨,汽车股全天向好,小鹏汽车劲升超11%;旅游股、光伏股走强,福莱特玻璃涨超7%
富途资讯6月12日消息,港股午后拉升转涨,恒指最终收涨0 07%,恒生科技指数涨0 27%。截至收盘,港股上涨795
-
2023-06-12 15:52:38
当前资讯!北京地铁换乘图_北京地铁换乘
1、大致来说是这样的:乘坐:北京地铁在已经修建开通的任何一个车站都可以乘坐,乘客需要选择到目的地比较
-
2023-06-12 14:38:34
焦点关注:今日黄金td开盘价格(2023年6月12日)
今日黄金td开盘价格(2023年6月12日)
-
2023-06-12 13:40:49
董明珠谈制造业高质量发展:好企业不能只看盈利
00:49中国青年报客户端讯(中青报·中青网见习记者裴思童记者林洁)6月11日,“高质量发展调研行”主题采访
-
2023-06-12 12:42:19
干部学习会丨以学正风显本色
□肖法超在主题教育中广大党员带着目标学习、向着问题进发,以学正风显本色、展担当,不断激发干事创业的生
-
2023-06-12 11:27:12
当前看点!江苏一男子驾车撞人致2死7伤!刚刚,警方通报
高邮公安微警务公众号发布警情通报:2023年6月11日晚8时许,我市经济开发区洞庭湖路发生一起轿车撞人事件,
-
嘉峪关合资公司律师事务所收费标准是多少|短讯
2022-12-21 03:48:36 -
南亚国家减贫与发展研修班第二期在重庆开班-当前热讯
2022-12-20 16:09:19 -
国网信通:目前公司暂未开展电力数据的定价和数据交易等相关业务
2022-12-20 11:01:59 -
泉峰汽车: 中国国际金融股份有限公司关于南京泉峰汽车精密技术股份有限公司调整可转换公司债券募投项目募集资金投入方式的核查意见 即时
2022-12-19 22:11:41 -
陆金贷(小额应急)逾期16年延迟还款会影响征信吗
2022-12-19 15:49:26 -
天天热点!工作人员宣布杨颖取消今晚直播,连续取消多个行程的她被曝已感染新冠
2022-12-19 09:53:36 -
多西对“推特文件门”的回应,藏着Web3满满的愿景
2022-12-19 00:13:43