在一篇文档中,你可能很熟悉文本查找,按下‘Ctrl F’输入你想要查找的词便可以实现。
但是在python中使用正则表达式则更进一步,它可以让你指定要查找的特定模式,并且根据该模式特定匹配在整个文本中所符合条件的内容。
其实正则表达式在很多编程语言中都是十分有用的,但如果不是程序员,很少有人会去了解它,现在大多数文本编辑器和文字处理器都有查找和替换的功能,都可根据正则表达式查找。
与此同时,正则表达式也可以节约大量的时间,它不仅适用于软件用户,也适用于进行软件开发的程序员。
技术作家Cory Doctorow就曾调侃道:“在教授编程之前,应该先教授正则表达式。”
其实如果你了解正则表达式,便意味着可以用三步解决一个问题,而不是3000步。如果你是一个技术大牛,那么你用几次敲击键盘就能解决的问题,别人可能要数天的繁琐工作才可以解决,并且容易犯错。这就是Python和现代人工智能所带来的便捷之处!
所以在这篇文章中,大灰狼会和大家分享用正则表达式来寻找文本模式,和正则表达式所具备的一些强大功能。
那么何为正则表达式?
正则表达式简称为「Regex」,是一种文本模式的叙述方法。例如‘d’是一个正则表达式,它所表示的是0-9的数字集合。在Python中就可以使用‘d’的正则表达式来匹配一连串的数字。
如我们可以使用‘ddd-dddd-dddd’来匹配我们通常所常见的电话号码的‘三四四’格式。但这也只是单纯的匹配数据,然而真正的正则表达式要比它复杂的多,同时正则表达式所具备的功能也远比想象中的要丰富。
那么在Python中如何正确的使用正则表达式呢?
正则表达式隐含在Python的re模块之中,当我们使用正则表达式的时候,首先要调用re模块。
re模块导入
代码语言:javascript复制import re
同时正则表达式的表示是使用re模块中的compile()方法。向该方法中传入一个字符串的值来表达正则表达式,它将返回一个Regex模式对象,这个对象就表示了将要匹配的内容的正则表达式格式。
compike()方法正则表达式的表示
代码语言:javascript复制telRegex=re.compile(r'ddd-dddd-dddd')
那么我们在设定好正则表达式之后,该如何让他进行文本匹配呢?
Regex对象的search()方法查找要寻找的字符串,寻找该正则表达式所有符合条件的匹配。
如果我们输入的字符串中没有类似的匹配,Search()方法将返回None(空值),如果找到了匹配,则search()方法将返回一个Match对象。其中mo是一个通用的名称,它可以用于Match对象。
Search()方法匹配文本
代码语言:javascript复制telRegex=re.compile(r'ddd-dddd-dddd')
mo = telRegex.search('she tel is:123-4567-8910')
与此同时,Match对象有一个group()方法,它返回被查找的字符串中实际匹配的文本。
在交互式环境下,输入以下代码就会呈现相应的效果, group()方法输入匹配文本
代码语言:javascript复制mo = telRegex.search('she tel is:123-4567-8910')
print(mo.group())
由此就可以看出,通过正则表达式来匹配寻找文本中的内容,比以往普通的方法要简单而方便的多。
同时,大灰狼也为大家总结了正则表达式匹配的具体方法步骤:
- 用import.re导入正则表达式模块
- 用re.compile()函数创建一个Regex对象(在此记得要使用原始字符串r)
- 向Regex对象的search()方法传入想要查找的字符串,它将返回一个Match对象
- 调用Match对象的group()方法返回实际匹配文本的字符串
匹配文本中的电话号码具体的实现代码如下:
文本电话号码匹配 import re
代码语言:javascript复制telRegex=re.compile(r'ddd-dddd-dddd')
mo = telRegex.search('she tel is:123-4567-8910')
print(mo.group())
以上就是正则表达式的最基本的使用方法,但正则表达式的使用过程中,还会使用到很多方法,如大小写字母、特殊字符、空格换行符等类型的匹配。
我也会陆续在之后的文章中和大家分享Python中正则表达式的深入应用。
觉得有用记得关注分享,大灰狼陪你一起进步!
也可以关注我的微信公众号“灰狼洞主”获取更多实用有趣的代码分享个互联网资讯!