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计算对角线有理函数插值的方法
May 07 Python
Python随手笔记之标准类型内建函数
Dec 02 Python
python正则实现提取电话功能
Feb 24 Python
python实现飞机大战
Sep 11 Python
启动Atom并运行python文件的步骤
Nov 09 Python
Python分析彩票记录并预测中奖号码过程详解
Jul 09 Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
Python爬虫requests库多种用法实例
May 28 Python
Python中关于logging模块的学习笔记
Jun 03 Python
在pytorch中动态调整优化器的学习率方式
Jun 24 Python
Python连续赋值需要注意的一些问题
Jun 03 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中的extract的作用分析
2008/04/09 PHP
PHP常用的文件操作函数经典收藏
2013/04/02 PHP
phpize的深入理解
2013/06/03 PHP
PHP MYSQL简易交互式站点开发
2016/12/27 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
理解Python中的绝对路径和相对路径
2017/08/30 Python
Python循环实现n的全排列功能
2019/09/16 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
python list的index()和find()的实现
2020/11/16 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
美国在线珠宝商店:SZUL
2017/02/11 全球购物
如何写好优秀的创业计划书
2014/01/30 职场文书
考试违纪检讨书
2014/02/02 职场文书
初二学习计划书范文
2014/04/27 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
安全口号大全
2014/06/21 职场文书
中职生求职信
2014/07/01 职场文书
离职证明标准格式
2014/09/15 职场文书
2014年超市工作总结
2014/11/19 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技