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 相关文章推荐
通过数据库向Django模型添加字段的示例
Jul 21 Python
Python 搭建Web站点之Web服务器与Web框架
Nov 06 Python
教你如何编写、保存与运行Python程序的方法
Jul 12 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
python 读写文件包含多种编码格式的解决方式
Dec 20 Python
PyTorch笔记之scatter()函数的使用
Feb 12 Python
Django Xadmin多对多字段过滤实例
Apr 07 Python
解决IDEA 的 plugins 搜不到任何的插件问题
May 04 Python
python ETL工具 pyetl
Jun 07 Python
Python Merge函数原理及用法解析
Sep 16 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 Python
教你用python实现12306余票查询
Jun 30 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设计模式 Prototype (原型模式)代码
2011/06/26 PHP
php类常量的使用详解
2013/06/08 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
jquery链式操作的正确使用方法
2014/01/06 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
javascript封装的sqlite操作类实例
2015/07/17 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
python实现百度关键词排名查询
2014/03/30 Python
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Python中自定义函数的教程
2015/04/27 Python
浅述python中深浅拷贝原理
2018/09/18 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
2020/11/30 Python
python实现ping命令小程序
2020/12/28 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
通用的Django注册功能模块实现方法
2021/02/05 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
学校领导班子对照检查材料
2014/09/24 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
经典爱情感言
2015/08/03 职场文书
教你部署vue项目到docker
2022/04/05 Vue.js
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle