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 10 Python
部署Python的框架下的web app的详细教程
Apr 30 Python
python中set常用操作汇总
Jun 30 Python
python版微信跳一跳游戏辅助
Jan 11 Python
pyqt5自定义信号实例解析
Jan 31 Python
pip install urllib2不能安装的解决方法
Jun 12 Python
Python 画出来六维图
Jul 26 Python
django+echart数据动态显示的例子
Aug 12 Python
python自动化测试之异常及日志操作实例分析
Nov 09 Python
python机器学习库xgboost的使用
Jan 20 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
python处理json数据文件
Apr 11 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语法(4)
2006/10/09 PHP
小偷PHP+Html+缓存
2006/11/25 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
php封装一个异常的处理类
2017/06/08 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
2011/08/23 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
Javascript中call与apply的学习笔记
2014/09/22 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
webpack优化的深入理解
2018/12/10 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
使用python求解二次规划的问题
2020/02/29 Python
python MultipartEncoder传输zip文件实例
2020/04/07 Python
美国派对用品及装饰品网上商店:Shindigz
2016/07/30 全球购物
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
水电工岗位职责
2014/02/12 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
同学聚会祝酒词
2015/08/10 职场文书
禁毒心得体会范文
2016/01/15 职场文书