Python教程之正则表达式(基础篇)
在一篇文档中,你可能很熟悉文本查找,按下‘Ctrl+F’输入你想要查找的词便可以实现。
但是在python中使用正则表达式则更进一步,它可以让你指定要查找的特定模式,并且根据该模式特定匹配在整个文本中所符合条件的内容。
其实正则表达式在很多编程语言中都是十分有用的,但如果不是程序员,很少有人会去了解它,现在大多数文本编辑器和文字处理器都有查找和替换的功能,都可根据正则表达式查找。
与此同时,正则表达式也可以节约大量的时间,它不仅适用于软件用户,也适用于进行软件开发的程序员。
技术作家Cory Doctorow就曾调侃道:“在教授编程之前,应该先教授正则表达式。”
其实如果你了解正则表达式,便意味着可以用三步解决一个问题,而不是3000步。如果你是一个技术大牛,那么你用几次敲击键盘就能解决的问题,别人可能要数天的繁琐工作才可以解决,并且容易犯错。这就是Python和现代人工智能所带来的便捷之处!
所以在这篇文章中,大灰狼会和大家分享用正则表达式来寻找文本模式,和正则表达式所具备的一些强大功能。
那么何为正则表达式?
正则表达式简称为「Regex」,是一种文本模式的叙述方法。例如‘d’是一个正则表达式,它所表示的是0-9的数字集合。在Python中就可以使用‘d’的正则表达式来匹配一连串的数字。
如我们可以使用‘ddd-dddd-dddd’来匹配我们通常所常见的电话号码的‘三四四’格式。但这也只是单纯的匹配数据,然而真正的正则表达式要比它复杂的多,同时正则表达式所具备的功能也远比想象中的要丰富。
那么在Python中如何正确的使用正则表达式呢?
正则表达式隐含在Python的re模块之中,当我们使用正则表达式的时候,首先要调用re模块。
re模块导入
import re
同时正则表达式的表示是使用re模块中的compile()方法。向该方法中传入一个字符串的值来表达正则表达式,它将返回一个Regex模式对象,这个对象就表示了将要匹配的内容的正则表达式格式。
compike()方法正则表达式的表示
telRegex=re.compile(r'ddd-dddd-dddd')
那么我们在设定好正则表达式之后,该如何让他进行文本匹配呢?
Regex对象的search()方法查找要寻找的字符串,寻找该正则表达式所有符合条件的匹配。
如果我们输入的字符串中没有类似的匹配,Search()方法将返回None(空值),如果找到了匹配,则search()方法将返回一个Match对象。其中mo是一个通用的名称,它可以用于Match对象。
Search()方法匹配文本
telRegex=re.compile(r'ddd-dddd-dddd')
mo = telRegex.search('she tel is:123-4567-8910')
与此同时,Match对象有一个group()方法,它返回被查找的字符串中实际匹配的文本。
在交互式环境下,输入以下代码就会呈现相应的效果, group()方法输入匹配文本
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
telRegex=re.compile(r'ddd-dddd-dddd')
mo = telRegex.search('she tel is:123-4567-8910')
print(mo.group())
以上就是正则表达式的最基本的使用方法,但正则表达式的使用过程中,还会使用到很多方法,如大小写字母、特殊字符、空格换行符等类型的匹配。
我也会陆续在之后的文章中和大家分享Python中正则表达式的深入应用。
觉得有用记得关注分享,大灰狼陪你一起进步!
也可以关注我的微信公众号“灰狼洞主”获取更多实用有趣的代码分享个互联网资讯!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android Manifest中meta-data扩展元素数据的配置与获取方式
- Android 配置gradle实现VersionCode自增实例
- 解决Android Studio Gradle Metadata特别慢的问题
- Android ProgressDialog用法之实现app上传文件进度条转圈效果
- Android实现获取meta-data和build.gradle的值
- 浅谈Android Studio导出javadoc文档操作及问题的解决
- Android获取清单文件中的meta-data,解决碰到数值为null的问题
- android studio 打包自动生成版本号与日期,apk输入路径详解
- 详解关于AndroidQ获取不到imsi解决方案
- 解决webview 第二次调用loadUrl页面不刷新的问题
- 浅谈 Android 7.0 多窗口分屏模式的实现
- Kotlin中的对象表达式和对象声明的具体使用
- Android 实现为点击事件添加震动效果
- 解决Android studio Error:(30, 31) 错误: 程序包 不存在的问题
- AndroidQ 沙箱适配多媒体文件(小结)