Python进阶(十二)----re模块

一丶re模块

​ re模块是python将正则表达式封装之后的一个模块.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。

#正则表达式:  从一串字符中,找出你想要的字符串.

import  re

### 单个元字符的匹配

# \W  除了数字 ,字母,中文, 下划线
print(re.findall('\W','dsadas1231 +1-+2*/,.'))
# \w 匹配中文,数字,字母,下划线
print(re.findall('\w','jdsa213-+*/,./:[]')) # \s 匹配 :空格 \t \n
print(re.findall('\s','a \t \n d '))
# \S 匹配: 非 空格 \t \n
print(re.findall('\S','\t \nas \t da ')) #\d 只匹配数字:
print(re.findall('\d','123da13d'))
#\D 值匹配非数字
print(re.findall('\D','dsa1321')) # \A 和 ^ 从开头开始匹配
print(re.findall('\Ahe','he kf danc j he ,d'))
print(re.findall('^he','he kf danc j he ,d')) # $ \Z 从末尾开始匹配
print(re.findall('aaa\Z','dsaaaddssaaa'))
print(re.findall('aaa$$','dsaaaddssa1aaa')) # \n \t
print(re.findall('\n','d\n d\n ds\ta'))
print(re.findall('\t','d\n d\n ds\ta')) #### 元字符匹配 # . 匹配任意一个字符
# 如果匹配成功光标则移到匹配成功的最后的字符
# 如果匹配未成功光标则向下移动一位再次匹配
print(re.findall('a.b','aa ,,dan a1b')) # ? 匹配 0个 或者 1个 由左边字符定义的片段
print(re.findall('a?b','ab aabb aaabbb')) # ['ab', 'ab', 'b', 'ab', 'b', 'b']
print(re.findall('a?b','sb ab aabb')) # [b, ab ,ab ,b] # * 匹配 0个 或者 多个 左边字符表达式, 满足贪婪模式(即:只要符合就ab都获取)
print(re.findall('a*b','ab abb a b aabb')) # ab ab b b aab b # + 匹配 1个 或者 多个 左边字符表达式 ,满足贪婪模式
print(re.findall('a+b','ab abab aab bba aabb b')) #ab ab aab aab #{m,n} 匹配m个至n个(能取到n)个左边字符表达式. 满足贪婪模式
print(re.findall('a{1,3}b','ab abb b bb aaab aaaaaab')) # ab ab aaab aaab # .* 贪婪匹配 从头到尾
print(re.findall('a.*b','aaa bbbliye dkjsah bnb'))
print(re.findall('a.*b','aaa b\nbbliye dkjsah bnb')) # .*? 此时的? 不是对左边的字符进行0次或者1次的匹配
# 而只是针对.* 这种贪婪模式进行一种限定:告知它要遵循非贪婪模式, 推荐使用!!
# 0给或者多个
print(re.findall('a.*?b','ab a#b bb abb aabb')) # ab a#b ab aab ### 常用的方法
# findall() 找所有
print(re.findall('正则表达式','ab a#b bb abb aabb')) # 根据正则遍历整个字符 ,返回成一个列表 # search() 方法 找到第一个符合字符的就返回 ,返回成一个对象, 以对象.group()进行取值
ret=re.search('正则',字符串)
print(re.group()) # 取值 #match() 方法 从头开始找符合正则的字符串,找到返回一个对象,找不到返回None 以对象.group()进行取值
# search() 方法 + ^(从头开始) 相当于 match()方法
ret=re.match('正则','字符串') # 从头开始
print(ret.group()) # 取值

关于正则:

    正则也是一门语言.如果只是python的初学者.没有必要深究,掌握几个简单的正则如何写. 就ok了.(web项目中的url可以进行简单的正则编写,更深层次的理解正则,得自学~)

转载一篇关于正则的详细博客:正则写的很全面

Python进阶(十二)----re模块的更多相关文章

  1. Python 进阶(二)模块

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW4AAABpCAIAAACVsl7UAAAgAElEQVR4nO2993vUxho2/P4r33XwSr

  2. Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型)

    Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型) 一丶软件开发规范 六个目录: #### 对某 ...

  3. Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)

    Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理) 一丶封装 , 多态 封装:            将一些东西封装到一个地方,你还可以取出来( ...

  4. Python进阶(十五)----面向对象之~继承(单继承,多继承MRO算法)

    Python进阶(十五)----面向对象之~继承 一丶面向对象的三大特性:封装,继承,多态 二丶什么是继承 # 什么是继承 # b 继承 a ,b是a的子类 派生类 , a是b的超类 基类 父类 # ...

  5. Python进阶(十四)----空间角度研究类,类与类之间的关系

    Python进阶(十四)----空间角度研究类,类与类之间的关系 一丶从空间角度研究类 对象操作对象属性 class A(): address = '沙河' def __init__(self, na ...

  6. Python进阶(十一)----包,logging模块

    Python进阶(十一)----包,logging模块 一丶包的使用 什么是包: ​ 包是通过使用 .模块名的方式组织python模块名称空间的方式. 通俗来说,含有一个__init__.py文件的文 ...

  7. 初学 Python(十二)——高阶函数

    初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...

  8. python系列十二:python3模块

    #!/usr/bin/python # This Python file uses the following encoding: gbk #Python3 模块 '''用 python 解释器来编程 ...

  9. Python 第十二篇:HTML基础

    一:基础知识: HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可 ...

随机推荐

  1. 声源定位之2精读《sound localization based on phase difference enhancement using deep neuarl networks》

    2.1.1 题目与摘要 1.为什么要增强IPD? The phase differences between the discrete Fourier transform (DFT) coeffici ...

  2. mysql中包含长字段索引的优化

    不同于oracle,在mysql的Innodb存储引擎中,对索引的总长度有限制.在mysql 5.7中(https://dev.mysql.com/doc/refman/5.7/en/innodb-r ...

  3. Python爬虫实例项目

    WechatSogou [1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典. DouBanSpider [2]- ...

  4. Visionworks OpenVX

    [TOC] Visionworks OpenVX OpenVX heterogeneous computation framework Spec OpenVX 1.2源碼解析 - 目錄結構 除了官方的 ...

  5. 1093 - You can't specify target table 'account' for update in FROM clause

    目的:查询一张表的相同的两条数据,并删除一条数据. 分析 先查询出相同的数据,然后删除 查询相同的数据 SELECT a.id FROM account a GROUP BY a.username H ...

  6. PHP 动态输出 svgz 格式图片

    使用PHP动态生成SVGZ图片(gzip压缩的SVG) 经测试SVG的动画性能很差,简单的动画CPU都能占到 30%左右. 可能的用途: 动态天气图片 访问统计计数图片 文字验证生成 动态头像 静态外 ...

  7. Python中,我该如何切分字符串后保留分割符?

    原文来源:https://stackoverflow.com/questions/2136556/in-python-how-do-i-split-a-string-and-keep-the-sepa ...

  8. cent os 部署blade

    一:安装docker 二:安装docker-compose 三:安装Harbor 四:配置Harbor使用https和2376端口 在/etc/docker 目录下面创建文件:create_tls_c ...

  9. TCP报文结构

    来自:https://blog.csdn.net/qq_32998153/article/details/79680704

  10. Linux磁盘空间查看、磁盘被未知资源耗尽

    Linux系统中,当我们使用rm在Linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄, 那么Linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%, ...