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 04 Python
python正则表达式去掉数字中的逗号(python正则匹配逗号)
Dec 25 Python
python分割文件的常用方法
Nov 01 Python
Python编写屏幕截图程序方法
Feb 18 Python
仅利用30行Python代码来展示X算法
Apr 01 Python
Python实现堆排序的方法详解
May 03 Python
Python远程视频监控程序的实例代码
May 05 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
利用pyshp包给shapefile文件添加字段的实例
Dec 06 Python
Pytorch实现LSTM和GRU示例
Jan 14 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 Python
pycharm 配置svn的图文教程(手把手教你)
Jan 15 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获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
每天学点Vue源码之vm.$mount挂载函数
2019/03/11 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
使用eslint和githooks统一前端风格的技巧
2020/07/29 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
Python中subprocess的简单使用示例
2015/07/28 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
病媒生物防治方案
2014/05/13 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
听证通知书
2015/04/24 职场文书
学校团代会开幕词
2016/03/04 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
python3.9之你应该知道的新特性详解
2021/04/29 Python