python正则表达式之对号入座篇


Posted in Python onJuly 24, 2018

一、定义

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。如果找到了符合这样一种规则的字符串,我们就说匹配上了,否则匹配失败。

二、匹配规则

1.语法规则

python正则表达式之对号入座篇 

2.相关注解

a.反斜杠问题

假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。其匹配过程如下:

字符 匹配过程
\\\\abc 为字符串实值取消反斜杠转义
\\abc 为re.compile()取消反斜杠转义
\abc 欲匹配的目标字符串

为了解决输入四个“\”的麻烦,我们可以使用python里的原生字符串(raw string),即在字符串前面加上r。如下:

import re 
 print(re.search(r"\\abc","123\\abc"))

从上面可知,使用原生字符串就省去了从字符串实值到re编译器的字符串转义过程,而编译器编译的时候仍然要转义。

b.贪婪匹配与非贪婪匹配

贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如:

import re
print(re.match("ab.*c","abcdfghc"))

匹配的结果为整个字符串。而非贪婪匹配就是匹配到结果就好,最少地匹配字符。python默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。

import re
 print(re.match("ab.*?c","abcdfghc"))

这样匹配的结果就是“abc”。

三、模块和函数

re模块

compile()编译语法规则

match()  从字符串开头位置开始匹配

search() 从字符串任意位置匹配到第一个符合规则的字符串

findall  以列表形式返回所有匹配到的字符串

finditer               以迭代器形式返回所有匹配到的字符串

split()  拆分字符串

group()   获取匹配到的字符串的分组信息

四、特殊构造的规则

python正则表达式之对号入座篇 

总结

以上所述是小编给大家介绍的python正则表达式之对号入座篇,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python中使用PyQt把网页转换成PDF操作代码实例
Apr 23 Python
Python中使用strip()方法删除字符串中空格的教程
May 20 Python
Python文件及目录操作实例详解
Jun 04 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
python matplotlib坐标轴设置的方法
Dec 05 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
用Cython加速Python到“起飞”(推荐)
Aug 01 Python
对Django url的几种使用方式详解
Aug 06 Python
django使用JWT保存用户登录信息
Apr 22 Python
Python基于time模块表示时间常用方法
Jun 18 Python
Flask中jinja2的继承实现方法及实例
Mar 03 Python
Python 字符串与二进制串的相互转换示例
Jul 23 #Python
Python二进制串转换为通用字符串的方法
Jul 23 #Python
Python基于多线程实现ping扫描功能示例
Jul 23 #Python
Python Tkinter模块实现时钟功能应用示例
Jul 23 #Python
python定向爬虫校园论坛帖子信息
Jul 23 #Python
python实现图片批量压缩程序
Jul 23 #Python
python中的插值 scipy-interp的实现代码
Jul 23 #Python
You might like
php 注释规范
2012/03/29 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
利用Python破解斗地主残局详解
2017/06/30 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
python实现合并两个排序的链表
2019/03/03 Python
numpy数组广播的机制
2019/07/12 Python
Django框架视图介绍与使用详解
2019/07/18 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
pytorch中的inference使用实例
2020/02/20 Python
Python如何将字符串转换为日期
2020/07/31 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
Ralph Lauren拉夫·劳伦美国官网:带有浓郁美国气息的高品味时装品牌
2017/11/01 全球购物
Linux操作面试题
2012/05/16 面试题
国际商务系学生个人的自我评价
2013/11/26 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
2014年妇幼卫生工作总结
2014/12/09 职场文书