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求列表交集的方法汇总
Nov 10 Python
用Python实现协同过滤的教程
Apr 08 Python
python实现统计代码行数的方法
May 22 Python
Python之父谈Python的未来形式
Jul 01 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
python读取raw binary图片并提取统计信息的实例
Jan 09 Python
Keras 切换后端方式(Theano和TensorFlow)
Jun 19 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 Python
Python的信号库Blinker用法详解
Dec 31 Python
Django后端按照日期查询的方法教程
Feb 28 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&amp;mysql(二)
2006/10/09 PHP
谈谈PHP的输入输出流
2007/02/14 PHP
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
列表内容的选择
2006/06/30 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
vue实现动态列表点击各行换色的方法
2018/09/13 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
基于form-data请求格式详解
2019/10/29 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
Python最基本的输入输出详解
2015/04/25 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
django 模型字段设置默认值代码
2020/07/15 Python
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
就业推荐表自我鉴定
2013/10/29 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
愚人节活动策划方案
2014/03/11 职场文书
食品安全工作方案
2014/05/07 职场文书
2014年幼儿园个人工作总结
2014/11/10 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
技术入股合作协议书
2016/03/21 职场文书
python 实现的截屏工具
2021/05/08 Python
python如何为list实现find方法
2022/05/30 Python