re模块 - 正则表达式 疏理(一)
在网上总是很难找到令自己比较满意的,关于正则表达式的文章。所以决定自己来总结一波,并配上相应的示例。
正则表达式:定义了规则,用来字符串处理。
用途:
1、匹配 - 符合规则的字符串,则认为匹配了。
2、提取 - 提取出符合规则的字符串。
python中通过re模块来处理正则表达式。re模块的常用方法如下:
re.match(re规则,字符串):从头开始匹配。从字符串的第一个字符开始匹配,如果第一个字符不匹配规则,那么匹配失败。
re.search(re规则,字符串):匹配包含。不要求从字符串的第一个字符就匹配。只要字符串当中有匹配该规则的,则就匹配成功。
re.findall(re规则,字符串):把所有匹配的字符放在列表中并返回。
re.sub(re规则,替换串,被替换串):匹配字符并替换。
正则表达式常用的规则如下:

下面一一示例来说明:
'.' : 是只匹配一个字符(除了\n)
如字符串a="hello123world!!" , 那么'.'匹配到的结果为:"h" .从字符串a中搜索,搜索什么呢,符合规则'.'的数据。
1 >>> import re #导入正则模块
2 >>> re.search('.','hello123world!!') #使用search方法
3 <_sre.SRE_Match object; span=(0, 1), match='h'> #匹配成功,返回了一个匹配对象。匹配的结果为:h match=表示匹配到的结果
'^' : 匹配字符串的开头。指定字符串必须以什么开头,如果不一样,则匹配失败。
如字符串a="hello123world!!" , 那么'^h'匹配到的结果为:"h" .如果是'^F'则匹配失败
1 >>> re.search('^h','hello123world!!')
2 <_sre.SRE_Match object; span=(0, 1), match='h'> #匹配以h开头的字符串,匹配成功,匹配结果为:h
3 >>> re.search('^F','hello123world!!')
4 >>> #匹配失败,为None
re.match方法也是从字符串开头匹配。所以与^效果一样:
1 1 >>> re.match('h','hello123world!!')
2 2 <_sre.SRE_Match object; span=(0, 1), match='h'> #匹配以h开头的字符串,匹配成功,匹配结果为:h
3 3 >>> re.match('F','hello123world!!')
4 4 >>> #匹配失败,没有输出
'$':指定字符串以$前的字符结尾 。
1 >>> re.search('!$','hello123world!!')
2 <_sre.SRE_Match object; span=(14, 15), match='!'> #匹配以!结尾的字符串,匹配成功,匹配结果为:!
4 >>> re.search('D$','hello123world!!')
5 >>> #匹配以D结尾的字符串,失败
'*':表示匹配前面的字符 0次 或者 多次
'+':表示匹配前面的字符 1次 或者 多次
以上的所有匹配都只是匹配到了一个字符。那这两个匹配符则可以匹配多次。
1 >>> re.search('lll*','hello123world!!')
2 <_sre.SRE_Match object; span=(2, 4), match='ll'> #*可以匹配到至于2个l
3
4 >>> re.search('lll+','hello123world!!')
5 >>> # +至少要匹配三个l 所以匹配失败
如果我想要指定匹配次数呢? -----
'{m} ':指定匹配前面字符的次数。

1 >>> re.search('el{2}','hello123world!!')
2 <_sre.SRE_Match object; span=(1, 4), match='ell'> #匹配l两次
3 >>>
4 >>> re.search('el{3}','hello123world!!') #匹配l三次 ,匹配失败
5 >>>
6 >>> re.search('el{1}','hello123world!!')
7 <_sre.SRE_Match object; span=(1, 3), match='el'> #匹配l一次

如果只考虑匹配 0次 或者 1次呢 ---
'?':表示匹配前面的字符 0次 或者 1次
1 >>> re.search('el?','hello123world!!')
2 <_sre.SRE_Match object; span=(1, 3), match='el'> #?匹配l 0次或者 1次
3 >>>
4 >>> re.search('ello7?','hello123world!!')
5 <_sre.SRE_Match object; span=(1, 5), match='ello'> #? 匹配7 0次或者1次
第一波总结到这里打止。。欢迎留言和交流。
re模块 - 正则表达式 疏理(一)的更多相关文章
- Python中的re模块--正则表达式
Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们 ...
- 【Python开发】Python之re模块 —— 正则表达式操作
Python之re模块 -- 正则表达式操作 这个模块提供了与 Perl 相似l的正则表达式匹配操作.Unicode字符串也同样适用. 正则表达式使用反斜杠" \ "来代表特殊形式 ...
- sys,os,模块-正则表达式
# *__conding:utf-8__* """"我是注释""" sys,os模块 import sysimport os pr ...
- Python之re模块 —— 正则表达式操作
这个模块提供了与 Perl 相似l的正则表达式匹配操作.Unicode字符串也同样适用. 正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突, ...
- Python re模块 正则表达式
1 简介 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C ...
- s14 第5天 时间模块 随机模块 String模块 shutil模块(文件操作) 文件压缩(zipfile和tarfile)shelve模块 XML模块 ConfigParser配置文件操作模块 hashlib散列模块 Subprocess模块(调用shell) logging模块 正则表达式模块 r字符串和转译
时间模块 time datatime time.clock(2.7) time.process_time(3.3) 测量处理器运算时间,不包括sleep时间 time.altzone 返回与UTC时间 ...
- re 模块 正则表达式
re模块(正则表达式) 一.什么是正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它 ...
- Python3 re模块(正则表达式)
一:什么是正则? 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. (在Python中)它内嵌在Python中,并通过r ...
- re模块正则表达式
regular expression / regex / RE 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.Python 自1.5版本起增加了re 模块,它提供 ...
随机推荐
- BAT面试题:使用数组实现一个简单的阻塞队列
这道题是我亲身经历的一道大厂面试题,非常值得分享! 这道题可以分为两个步骤进行编码解答,第一步是基于数组实现一个队列,第二步是实现线程阻塞. 如果是基于数组实现栈的数据结构,那么我们只需要一个指针进行 ...
- dedecms织梦的不同栏目调用不同banner图的方法
在做织梦站的时候我们会有不同的栏目,比如联系我们,产品中心等等,banner也不一样,方法如下: 我们可以使用织梦的顶级栏目ID标签,把图片命名成顶级栏目typeid ,代码如下: <img s ...
- Echarts学习之路3(在react中使用)
安装: npm install echarts --save demo import React, { Component } from 'react'; // 引入 ECharts 主模块 impo ...
- Java Web的简单项目部署
目录 项目介绍 安装并配置jdk和tomcat 安装并配置mysql 使用Eclipse导出war包 部署war包到服务器 导出项目的数据库 将项目的数据库导入服务器的数据库中 修改配置 重启Tomc ...
- SpringMVC 实现文件上传与下载,并配置异常页面
目录 上传文件的表单要求 Spring MVC实现上传文件 需要导入的jar包 配置MultipartResolver解析器 编写接收上传文件的控制器 Spring MVC实现文件下载 下载文件时的h ...
- js获取元素宽高、位置相关知识汇总
常见clientWidth.clientHeight.offsetWidth.offsetLeft,clientX.scrollTop等词语,比较混乱,现在总结下他们的区别. 1. clientWid ...
- DAY22、面向对象
一.复习:1.面向过程与面向对象 过程:程序流程化,可拓展性差 对象:程序流程多样化,可拓展性强 面向对象引入属性 | 方法的概念,通过所属者.语法调用2.拥有名称空间的对象:有__dict__属性, ...
- Python——Pyqt5(界面)——基本设置
一.Pycharm外加设置 设置扩展工具 1.Qt Design(图形界面) Program:工程目录\venv\Lib\site-packages\pyqt5-tools\designer.exe ...
- Nginx CONTENT阶段 autoindex、index模块
L 66 autoindex 指令 syntax : on | off; default : off; context : http,server,location; autoindex_exact_ ...
- 微信小程序工具类
wechat-common-sdk ? 场景:目前工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想 ...