Python正则表达式教程之一:基础篇


Posted in Python onMarch 02, 2017

前言

之前有人提了一个需求,我一看此需求用正则表达式最合适不过。考虑到之前每次使用正则表达式,都是临时抱佛脚,于是这次我就一边完成任务一边系统的学习了一遍正则表达式。主要参考PyCon2016上的一个视频Regular Expressions。

我将分几篇文章对正则表达式进行总结。

以下是第一部分,基础: 

基础部分

这里总结了正则表达式最基础的用法,其中大部分内容对我(以及大部分程序员)来说都是平时经常用到的,所以我就一笔带过了,只对其中的几处用例子说明。 

     .           除了换行之外的其他所有字符

     ^           行首

     $           行尾

     [abcd]      abcd其中的一个字符

     [^abcd]     除了abcd之外的任意字符

     [a-d]       相当于[abcd]

     [a-dz]      相当于[abcdz]

     \b          单词边界

     \w          字母数字或下划线 相当于[a-zA-Z0-9_]

     \W          与\w相反

     \d          数字,相当于[0-9]

     \D          与\d相反

     \s          空白字符,相当于[ \t\n\r\f\v]

     \S          与\s相反

     {5}         在此之前的正则表达式部分(下同)准确的出现5次

     {2,5}       ~出现2到5次

     {2,}        ~出现2次或多次

     {,5}        ~出现0到5次

     *          ~出现0次或多次

     ?          ~出现0次或1次

     +           ~出现1次或多次

     ABC|DEF     匹配ABC或者DEF

     \          转义字符,如\表示匹配*,\$表示匹配$* 

\b、 \用以下几个例子简单说明一下: 

     \b:

>>> re.search(r'\bhello\b', 'hello')
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> re.search(r'\bhello\b', 'hello world')
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> re.search(r'\bhello\b', 'hello,world')
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> re.search(r'\bhello\b', 'hello_world') 
>>>

其实这里,\b大体上和\W一支,但是\b可以匹配行首行尾等非显示类的字符,而\W不可以。 

     \:

>>> re.search(r'\$100', '$100')
<_sre.SRE_Match object; span=(0, 4), match='$100'>
>>> re.search(r'$100', '$100') 
>>>

想要匹配那些在正则表达式中有特殊含义的字符,如$、^、*等,就需要用\进行转义。 

raw string:

另外,前面例子中,模式字符串(pattern)前面都加了一个r,这个r的意思是raw string,后面所接的字符串,Pyhton解释器无需对其进行转义。因为,\在Python字符串中和正则表达式中都有特殊含义,所以如果不是raw string,那么要表达一个\字符,就需要四个\了(在Python解释器中先转义一次,2个\表示1个\,剩下2个\,在正则表达式中又转义一次,最终剩下一个\)。例如:

>>> re.search(r'\bhello\b', 'hello')
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> re.search('\bhello\b', 'hello') 
>>> re.search('\\bhello\\b', 'hello')
<_sre.SRE_Match object; span=(0, 5), match='hello'>

>>> re.search('\\\\hello\\\\', '\\hello\\') 
<_sre.SRE_Match object; span=(0, 7), match='\\hello\\'>
>>> re.search(r'\\hello\\', '\\hello\\') 
<_sre.SRE_Match object; span=(0, 7), match='\\hello\\'>
>>> print('\\hello\\')
\hello\

总结

以上就是关于Python正则表达式之基础的全部内容了,有了这些知识,正则表达式的基本运用就没什么问题了。对于一些特殊情况,还需要掌握另外一些高级用法,敬请期待后续文章。希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,如果有疑问大家可以留言交流。

Python 相关文章推荐
python检测lvs real server状态
Jan 22 Python
轻松掌握python设计模式之访问者模式
Nov 18 Python
一篇文章快速了解Python的GIL
Jan 12 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
Python实现快速计算词频功能示例
Jun 25 Python
Python Pexpect库的简单使用方法
Jan 29 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
python实现获取单向链表倒数第k个结点的值示例
Oct 24 Python
Python Numpy 自然数填充数组的实现
Nov 28 Python
keras自定义回调函数查看训练的loss和accuracy方式
May 23 Python
python实现自动打卡的示例代码
Oct 10 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
Python单例模式实例详解
Mar 01 #Python
python实现字典(dict)和字符串(string)的相互转换方法
Mar 01 #Python
python 截取 取出一部分的字符串方法
Mar 01 #Python
详解Python中的静态方法与类成员方法
Feb 28 #Python
python基于itchat实现微信群消息同步机器人
Feb 27 #Python
不要用强制方法杀掉python线程
Feb 26 #Python
Python实现 多进程导入CSV数据到 MySQL
Feb 26 #Python
You might like
php中的常用魔术方法汇总
2016/02/14 PHP
laravel 之 Eloquent 模型修改器和序列化示例
2019/10/17 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
node.js中的console.trace方法使用说明
2014/12/09 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
常用的几个JQuery代码片段
2017/03/13 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
python中遍历文件的3个方法
2014/09/02 Python
python中反射用法实例
2015/03/27 Python
星球大战与Python之间的那些事
2016/01/07 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
浅谈python之新式类
2018/08/12 Python
对python中的装包与解包实例详解
2019/08/24 Python
django框架中间件原理与用法详解
2019/12/10 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
jupyter notebook 多行输出实例
2020/04/09 Python
python实现IOU计算案例
2020/04/12 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
会计专业自我鉴定范文
2013/10/06 职场文书
零件设计自荐信范文
2013/11/27 职场文书
经贸专业毕业生求职信
2014/03/23 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
优秀英文求职信范文
2015/03/19 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书
合理缓解职场压力,让你随时保持最佳状态!
2019/06/21 职场文书
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS