Python进阶(十二)----re模块
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模块的更多相关文章
- Python 进阶(二)模块
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW4AAABpCAIAAACVsl7UAAAgAElEQVR4nO2993vUxho2/P4r33XwSr
- Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型)
Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型) 一丶软件开发规范 六个目录: #### 对某 ...
- Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)
Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理) 一丶封装 , 多态 封装: 将一些东西封装到一个地方,你还可以取出来( ...
- Python进阶(十五)----面向对象之~继承(单继承,多继承MRO算法)
Python进阶(十五)----面向对象之~继承 一丶面向对象的三大特性:封装,继承,多态 二丶什么是继承 # 什么是继承 # b 继承 a ,b是a的子类 派生类 , a是b的超类 基类 父类 # ...
- Python进阶(十四)----空间角度研究类,类与类之间的关系
Python进阶(十四)----空间角度研究类,类与类之间的关系 一丶从空间角度研究类 对象操作对象属性 class A(): address = '沙河' def __init__(self, na ...
- Python进阶(十一)----包,logging模块
Python进阶(十一)----包,logging模块 一丶包的使用 什么是包: 包是通过使用 .模块名的方式组织python模块名称空间的方式. 通俗来说,含有一个__init__.py文件的文 ...
- 初学 Python(十二)——高阶函数
初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...
- python系列十二:python3模块
#!/usr/bin/python # This Python file uses the following encoding: gbk #Python3 模块 '''用 python 解释器来编程 ...
- Python 第十二篇:HTML基础
一:基础知识: HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可 ...
随机推荐
- 解决'maven lifecycle mapping not converted'的问题
基于maven的项目,使用各种maven plugin来完成开发中的各种工作,例如编译代码,打包,部署等等… 每个plugin包含许多的goal,用来做特定的事情.典型的基于java的maven项目就 ...
- Python3用多线程替代for循环提升程序运行速度
[本文出自天外归云的博客园] 优化前后新老代码如下: from git_tools.git_tool import get_collect_projects, QQNews_Git from thre ...
- 编写基于TCP的应用程序
编写基于TCP的应用程序 这似乎是一个非常简单的话题, 就跟"是个人就能做网站"一样, 你可能也认为"是个人就能写使用TCP socket的网络程序". 不 ...
- Linux 对音频万能处理的命令——SOX
what's the SOX SoX(即 Sound eXchange)是一个跨平台(Windows,Linux,MacOS 等)的命令行实用程序,可以将各种格式的音频文件转换为需要的 ...
- 百度网盘快速下载工具下载:Pandownload下载
众所周知的百度网盘下载限速很厉害,所以就有了快速下载工具出现了.一般情况下,按照家里网速有多快,使用工具下载就有多快. 可以直接复制如下图进行下载: 另外,PanDownload[百度网盘下载工具]无 ...
- 《绯雨骑士团》Demo,框架实现,寻路打怪
在家无事花几天做了个放置挂机demo,做着玩吧.和海拓的<凡人修仙传>类似吧,自动挂机刷怪打boss数值游戏,但是我比较喜欢二次元的,所以选了<绯雨骑士团>的资源. 参考了以下 ...
- java自定义jar包让jmeter使用---给java参数化
上一篇文章中,提到怎么生成jar包让jmeter使用,这次我们来试试做参数,因为发现调包的时候其实更多还是参数化,那么开始改造吧 1.在httpclientpost这个类中替换参数,且打印参数 imp ...
- vue-cli3用图形化的方式创建项目
Vue脚手架可以快速生成Vue项目基础的架构. A.安装3.x版本的Vue脚手架: npm install -g @vue/cli B.基于3.x版本的脚手架创建Vue项目: 1).使用命令创建Vue ...
- Centos7安装部署Rabbitmq教程
依赖关系: 版本依赖一定要提前看清楚. RabbitMQ相关版本依赖关系查看 https://www.rabbitmq.com/which-erlang.html 可以看到要求版本Erlang21.3 ...
- .NET Core开源Quartz.Net作业调度框架实战演练
一.需求背景 人生苦短,我用.NET Core!作为一枚后端.NET开发人员,项目实践常遇到定时Job任务的工作,在Windows平台最容易想到的的思路Windows Service服务应用程序,而在 ...