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之编写类之四再论继承
Oct 11 Python
python下载图片实现方法(超简单)
Jul 21 Python
flask中主动抛出异常及统一异常处理代码示例
Jan 18 Python
解决Python pandas df 写入excel 出现的问题
Jul 04 Python
Pytorch mask_select 函数的用法详解
Feb 18 Python
Python安装OpenCV的示例代码
Mar 05 Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 Python
基于SpringBoot构造器注入循环依赖及解决方式
Apr 26 Python
python使用opencv resize图像不进行插值的操作
Jul 05 Python
BeautifulSoup中find和find_all的使用详解
Dec 07 Python
selenium如何定位span元素的实现
Jan 13 Python
在python中实现导入一个需要传参的模块
May 12 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 Memcache 中实现消息队列
2009/11/24 PHP
PHP处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
2016/10/21 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
Python实例一个类背后发生了什么
2016/02/09 Python
Python中str is not callable问题详解及解决办法
2017/02/10 Python
Python中的Numpy矩阵操作
2018/08/12 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
Python求解正态分布置信区间教程
2019/11/20 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
幼儿园秋游活动方案
2014/01/21 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
中学校庆方案
2014/03/17 职场文书
卖车协议书
2014/04/21 职场文书
2014年体育工作总结
2014/11/24 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
签约仪式致辞
2015/07/30 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
vue动态绑定style样式
2022/04/20 Vue.js