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 07 Python
介绍Python的Django框架中的QuerySets
Apr 20 Python
Python使用CMD模块更优雅的运行脚本
May 11 Python
浅谈Python由__dict__和dir()引发的一些思考
Oct 30 Python
详解Tensorflow数据读取有三种方式(next_batch)
Feb 01 Python
pandas 根据列的值选取所有行的示例
Nov 07 Python
解决python文件双击运行秒退的问题
Jun 24 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
Dec 13 Python
在keras中对单一输入图像进行预测并返回预测结果操作
Jul 09 Python
使用python编写一个语音朗读闹钟功能的示例代码
Jul 14 Python
使用python批量修改XML文件中图像的depth值
Jul 22 Python
Python制作春联的示例代码
Jan 22 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
URL Rewrite的设置方法
2007/01/02 PHP
php xml-rpc远程调用
2008/12/19 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
微信打开网址添加在浏览器中打开提示的办法
2019/05/20 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
小程序实现tab标签页
2020/11/16 Javascript
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
python递归函数用法详解
2020/10/26 Python
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
智能旅行箱:Horizn Studios
2018/04/30 全球购物
《匆匆》教学反思
2014/02/22 职场文书
李培根演讲稿
2014/05/22 职场文书
不听老师话的万能检讨书
2014/10/04 职场文书
介绍信模板
2015/01/31 职场文书
小班上学期个人总结
2015/02/12 职场文书
公司清洁工岗位职责
2015/04/15 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
Oracle锁表解决方法的详细记录
2022/06/05 Oracle