正则表达式是一个以简单直观的方式匹配指定文本信息从而达到查找、替换等操作的目的。正则表达式以其简单而高效的特点使得其在数据分析和数据验证方面应用广泛。
对于简单的正则表达式可以直接百度之,这里重点引荐下‘特殊'操作。
1.非贪婪模式 - {x,y}"htmlcode">
可以通过m.groups()看到分组匹配结果,通过m.group(index)查看具体编号的分组结果(编号从1开始,0是完整的匹配)。那分组有什么用呢,好像也没什么特殊的含义,不急,下面会用到。 3.引用分组(回溯) - \N 有这么一种情况,比如假设我要找出一个html文本中的所有<a></a>标签,怎么办?试试这样: > re.search(r'<(\w+)>.+</(\w+)>','<a>this is a demo</e>') 奇怪的事情来了,为什么<a></e>被匹配成功了,显然结果并不是想要的,那怎么才能只匹配<a></a>而过滤掉其他的呢(比如<a></e>)?答案就是引用分组,例: > re.search(r'<(\w+)>.+</\1>','<a>this is a demo</e><p>demo two</p>') 这里\1是关键,意思就是当前位置匹配的结果需要和第一个分组匹配的结果一致,或者说第一个分组的匹配结果期望在这里再次出现。以此类推。该方法最多只能匹配前99个分组。 4.分组命名 - ("htmlcode">
当然,命名分组仍然是编号分组,依然可以使用编号进行查找分组。 5.先行断言 - X(?!Y)、X(?=Y) 假设有这么一种情况,要查找所有163信箱的文本,也就是@163.com结尾的所有email账号信息,也就是说不要@163.com这部分,但是其还要参与匹配。这就用到了先行断言,也即基于之后的内容是否存在接收或拒绝一个匹配,而不需要接下来的内容作为匹配的一部分。例: > re.search(r'h(?!e)','hello home!') h(?!e)表示匹配h,而且h后面不能是e,此处匹配成功的是home,但是只返回h > re.search(r'h(?=e)','hello home!') h(?=e)表示匹配he,此处匹配成功的是hello,但是只返回h 6.标记 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
> m = re.search(r'(\d{3})-(\d{5})','029-25642')
> m.group()
'029-25642'
> m.groups()
('029', '25642')
> m.group(2)
'25642'
<_sre.SRE_Match object; span=(0, 21), match='<a>this is a demo</e>'>
<_sre.SRE_Match object; span=(21, 36), match='<p>demo two</p>'>
> m = re.search(r'(?P<first_name>\d{3})-(?P<second_name>\d{4})','029-8967')
> m.group('first_name')
'029'
> m.groupdict()
{'first_name': '029', 'second_name': '8967'}
<_sre.SRE_Match object; span=(6, 7), match='h'>
<_sre.SRE_Match object; span=(0, 1), match='h'>
python,正则表达式,用法
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]