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制作检测Linux运行信息的工具的教程
Apr 01 Python
使用python爬虫获取黄金价格的核心代码
Jun 13 Python
详解python中的Turtle函数库
Nov 19 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
Jul 06 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
python实现批量nii文件转换为png图像
Jul 18 Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 Python
基于python3 的百度图片下载器的实现代码
Nov 05 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
利用python实现汉诺塔游戏
Mar 01 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
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
客户端静态页面玩分页
2006/06/26 Javascript
表单的一些基本用法与技巧
2006/07/15 Javascript
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
js中传递特殊字符(+,&amp;)的方法
2014/01/16 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
python读取html中指定元素生成excle文件示例
2014/04/03 Python
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
python迭代器与生成器详解
2016/03/10 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
医学专业毕业生个人求职信
2013/12/25 职场文书
大学生简短的自我评价分享
2014/02/20 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
酒店前台岗位职责
2015/04/16 职场文书
劳动争议仲裁代理词
2015/05/25 职场文书
公司管理制度范本
2015/08/03 职场文书
ICOM R71E和R72E图文对比解说
2022/04/07 无线电