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中List的sort方法指南
Sep 01 Python
零基础写python爬虫之urllib2使用指南
Nov 05 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
Dec 31 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
May 04 Python
eclipse创建python项目步骤详解
May 10 Python
python使用装饰器作日志处理的方法
Jul 11 Python
对python 树状嵌套结构的实现思路详解
Aug 09 Python
pytorch自定义初始化权重的方法
Aug 17 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
Python异常继承关系和自定义异常实现代码实例
Feb 20 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
python爬虫scrapy图书分类实例讲解
Nov 23 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
虫族 Zerg 热键控制
2020/03/14 星际争霸
推荐文章系统(一)
2006/10/09 PHP
关于PHP递归算法和应用方法介绍
2013/04/15 PHP
PHP类继承 extends使用介绍
2014/01/14 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
详解js图片轮播效果实现原理
2015/12/17 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
bootstrap轮播图示例代码分享
2017/05/17 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
python如何调用字典的key
2020/05/25 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
Betsey Johnson官网:妖娆可爱的连衣裙及鞋子、手袋和配件
2016/12/30 全球购物
2014年青年教师工作总结
2014/12/17 职场文书
心术观后感
2015/06/11 职场文书
圣诞晚会主持词
2015/07/01 职场文书
生日宴会祝酒词
2015/08/10 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
八年级作文之友情
2019/11/25 职场文书