首页 后端 Python 正文

深入了解Python正则表达式

前言

在本节中,我们将学习更多关于如何处理正则表达式的知识。在学习了基础知识之后,我们将更深入地了解模式元素,介绍另一种用于检索和解析字符串的方法 group() 方法,介绍如何搜索同一字符串的重复出现次数,以及处理更长的文本。

正则表达式实例

导入 re 模块,将电话模式匹配为 group 的一部分,并将其置于括号中,用于获取电话号码,符号 \d 用于匹配任意数字 (09):

>>> match = re.search(r'My phone number is ([\d-]+)','My phone number is 100-0000-0000')
>>> match.group()
'My phone number is 100-0000-0000'
>>> match.group(0)
'My phone number is 100-0000-0000'
>>> match.group(1)
'100-0000-0000'

要定义组 group,将定义的组放在括号中,以便后续可以单独检索组。使用 group()group(0) 将获取整个匹配项,而括号中 group 的匹配项按它们出现的顺序排列,需要使用 group(1)group(2) 等。

我们也可以通过编译 (compile) 模式进行匹配,并使用 re.IGNORECASE 选项捕获不区分大小写的模式,使用符号 \w 匹配任意字母(包括数字,但不包括句点等字符符号):

>>> pattern = re.compile(r'The judgement of this answer (\w+) is (wrong|correct)', re.IGNORECASE)
>>> match = pattern.search('I think The judgement of this answer five is wrong')
>>> match.group()
'The judgement of this answer five is wrong'
>>> match.group(1)
'five'
>>> match.group(2)
'wrong'
>>> match.groups()
('five', 'wrong')
>>> match = pattern.search('I think The judgement of this answer five$ is wrong')
>>> match.groups()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'groups'

使用编译模式的优势在于,如果需要反复多次匹配模式,可以节省时间,首先使用 compile 编译模式,然后使用该对象执行 research 方法。在编译模式时可以添加一些额外的标志选项,用于修改模式的匹配方式,例如使用 re.IGNORECASE 使模式不区分大小写。

匹配文本中出现的所有省和城市名,省名和城市名之间使用单个字符串分隔,且省、市名均以大写字母开头,使用符号 \s 匹配任意空白字符,包括制表符和其他空白特殊字符,而使用符号 . 则可以标记任意字符:

>>> pattern = re.compile(r'([A-Z][\w\s]+?).([A-Z][\w\s]+?)')
>>> text = 'Shandong,Jinan has a reputation as a famous "spring city", Guangdong.Guangzhou has a reputation as a famous "flower city", Jiangsu Suzhou has a reputation as a famous "water town".'
>>> list(pattern.finditer(text))
[<re.Match object; span=(0, 11), match='Shandong,Ji'>, <re.Match object; span=(59, 71), match='Guangdong.Gu'>, <re.Match object; span=(123, 133), match='Jiangsu Su'>]

深入了解Python正则表达式  第1张

打赏
海报

本文转载自互联网,旨在分享有价值的内容,文章如有侵权请联系删除,部分文章如未署名作者来源请联系我们及时备注,感谢您的支持。

转载请注明本文地址:https://www.shouxicto.com/article/6213.html

相关推荐

python怎么下载?

python怎么下载?

前言在本节中,我们将学习更多关于如何处理正则表达式的知识。在学习了基础知识之后,我们将更深入地了解模式元素,介绍另一种用于检索和解析字符...

Python 2022.08.26 0 408

初学者如何学习Python?

初学者如何学习Python?

前言在本节中,我们将学习更多关于如何处理正则表达式的知识。在学习了基础知识之后,我们将更深入地了解模式元素,介绍另一种用于检索和解析字符...

Python 2022.08.25 0 301

用 PaddleOCR 识别表情包文字

最近在做个表情包的小程序,涉及到表情包搜索功能。我们上传表情包的时候,只有一张图,怎么搜索?这个时候我们想到就是将表情包的文字提取出来,作为搜索的内容。那么这就需要用到 ocr 技术了。经过几个 oc...

Python 2022.08.20 0 386

Python解析参数的三种方法

Python解析参数的三种方法

前言在本节中,我们将学习更多关于如何处理正则表达式的知识。在学习了基础知识之后,我们将更深入地了解模式元素,介绍另一种用于检索和解析字符...

Python 2022.08.18 0 388

Python异常处理机制

Python异常处理机制

前言在本节中,我们将学习更多关于如何处理正则表达式的知识。在学习了基础知识之后,我们将更深入地了解模式元素,介绍另一种用于检索和解析字符...

Python 2022.08.16 0 336

发布评论

ainiaobaibaibaibaobaobeishangbishibizuichiguachijingchongjingdahaqiandaliandangaodw_dogedw_erhadw_miaodw_tuzidw_xiongmaodw_zhutouganbeigeiliguiguolaiguzhanghahahahashoushihaixiuhanheixianhenghorse2huaixiaohuatonghuaxinhufenjiayoujiyankeaikeliankouzhaokukuloukunkuxiaolandelinileimuliwulxhainiolxhlikelxhqiuguanzhulxhtouxiaolxhwahahalxhzanningwennonuokpinganqianqiaoqinqinquantouruoshayanshengbingshiwangshuaishuijiaosikaostar0star2star3taikaixintanshoutianpingtouxiaotuwabiweifengweiquweiwuweixiaowenhaowoshouwuxiangjixianhuaxiaoerbuyuxiaokuxiaoxinxinxinxinsuixixixuyeyinxianyinyueyouhenghengyuebingyueliangyunzanzhajizhongguozanzhoumazhuakuangzuohenghengzuoyi
支付宝
微信
赞助本站