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 sort、sorted高级排序技巧
Nov 21 Python
Python 多线程的实例详解
Sep 07 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
pandas重新生成索引的方法
Nov 06 Python
python矩阵/字典实现最短路径算法
Jan 17 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
python logging通过json文件配置的步骤
Apr 27 Python
在pycharm中关掉ipython console/PyDev操作
Jun 09 Python
django和flask哪个值得研究学习
Jul 31 Python
python和C++共享内存传输图像的示例
Oct 27 Python
python中判断数字是否为质数的实例讲解
Dec 06 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
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
php 多关键字 高亮显示实现代码
2012/04/23 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
open 动态修改img的onclick事件示例代码
2013/11/13 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
jstree单选功能的实现方法
2017/06/07 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
小程序云函数调用API接口的方法
2019/05/17 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
Python yield使用方法示例
2013/12/04 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
Python os.access()用法实例
2019/02/18 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
vue常用指令代码实例总结
2020/03/16 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
大课间活动制度
2014/01/18 职场文书
庆祝教师节活动方案
2014/01/31 职场文书
天鹅的故事教学反思
2014/02/04 职场文书
档案室主任岗位职责
2014/02/12 职场文书
校园演讲稿汇总
2014/05/21 职场文书
计算机毕业生求职信
2014/06/10 职场文书
2014年安全生产责任书
2014/07/22 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
Python Django模型详解
2021/10/05 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python