day23 Pythonpython 本文re模块
re模块用于对python的正则表达式的操作。
字符:
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
次数:
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
一、普通字符:
. 通配符一个.只匹配一个字符
import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("a..d","avsdcabcd")) 结果:
['abcd']
['avsd', 'abcd']
^ 以什么开头
import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("^avd","avddddcaavddbcd")) 结果:
['abcd']
['avd']
$ 以什么结尾
import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd$","avddddcaavddbcavd")) 结果:
['abcd']
['avd']
* 代表匹配*前面的字符 重复0到无穷次
import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd*","avddddcaavddbcavavd")) 结果:
['abcd']
['avdddd', 'avdd', 'av', 'avd']
+ 代表匹配+前面的字符 重复1到无穷次
import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd+","avddddcaavddbcavavd")) 结果:
['abcd']
['avdddd', 'avdd', 'avd']
*和+属于贪婪匹配
? 代表匹配?前面的字符的0次或者是1次
import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd?","avddddcaavddbcavavd")) 结果:
['abcd']
['avd', 'avd', 'av', 'avd']
{}可以指定重复几次
{0,} 代表重复{}前面字符的0到无穷次,相当于*
{1,} 代表重复{}前面字符的1到无穷次,相当于+
{0,1}代表重复{}前面字符的0到1次,相当于?
{6}代表重复{}前面字符的6次
{1,3}代表重复{}前面字符的1次到3次
import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd{3}","avddddcaavddbcavavd")) print(re.findall("avd{3}","avddddcaavddbcavavd"))
print(re.findall("avd{2,4}","avddddcaavddbcavavd"))
print(re.findall("avd{0}","avddddcaavddbcavavd"))
print(re.findall("avd{7}","avddddcaavddbcavavd")) 结果:
['abcd']
['avddd']
['avddd']
['avdddd', 'avdd']
['av', 'av', 'av', 'av']
[]
惰性匹配*? 只要匹配出*前面的字符的0次就不匹配了
import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd*?","avddddcaavddbcavavd")) 结果:
['abcd']
['av', 'av', 'av', 'av']
惰性匹配+? 只要匹配出+前面的字符的1次就不匹配了
import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd+?","avddddcaavddbcavavd")) 结果:
['abcd']
['avd', 'avd', 'avd']
二、字符集
1、或的功能
import re
print(re.findall("x[yz]","xyzzzxyzxssdzx"))
print(re.findall("x[yz]","xyzzzxzsdxzzy"))
print(re.findall("x[yz]p","xypzzzxzsdxzpzy")) 结果:
['xy', 'xy']
['xy', 'xz', 'xz']
['xyp', 'xzp']
2、[]中得特殊符号- 匹配字母
取小写字符
import re
print(re.findall("[a-z]","as32eer45ttt564")) 结果:
['a', 's', 'e', 'e', 'r', 't', 't', 't']
取大写字
import re
print(re.findall("[A-Z]","as32eADCrc45ttDWSDS564")) 结果:
['A', 'D', 'C', 'D', 'W', 'S', 'D', 'S']
取大小写字母
import re
print(re.findall("[a-zA-Z]","as32eADCrc45ttDWSDS564")) 结果:
['a', 's', 'e', 'A', 'D', 'C', 'r', 'c', 't', 't', 'D', 'W', 'S', 'D', 'S']
取DC后面跟一个字母 取ab后面跟0个或者1 个字母
import re
print(re.findall("DC[a-z]?","as32eADCrc45ttDCWSDS564")) 结果:
['DCr', 'DC']
3、[]里面的特殊符号^ 是取反的意思
4、[]里面的特殊符号\ 叫转义符 最牛的一个斜杠
\d 匹配任意十进制数,相当于[0-9]
\D 匹配任意非数字字符,相当于[^0-9]
\s 匹配任何空白字符
\S 匹配任何非空白字符
\w 匹配任何字符数字字符,相当于[a-zA-Z0-9_]
\W 匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]
\b 匹配一个特殊字符边界,比如空格 & # 等
未完待续。。。。。
day23 Pythonpython 本文re模块的更多相关文章
- day22 Pythonpython 本文xml模块
一.xml介绍 xml是实现不同语言或者程序直接进行数据交换的协议,跟json差不多,单json使用起来更简单.不过现在还有很多传统公司的接口主要是xml xml跟html都是标签语言 我们主要学习的 ...
- day22 Pythonpython 本文json模块
json模块 •应用场景: json模块主要用于处理json格式的数据,可以将json格式的数据转化为python的字典,便于python处理,同时也可以将python的字典或列表等对象转化为json ...
- day22 Pythonpython 本文sys模块
一.sys模块 用来提供对Python解释器相关的操作 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.versio ...
- day22 Pythonpython random随机模块:略!!!本文os模块
OS模块 用于提供系统级别的操作: os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相 ...
- day23 正则,re模块
一. 简谈正则表达式 元字符 . 除了换行符外任意字符. \w 数字.字母.下划线 \s 空白符 \b 单词的末尾 \d 数字 \n 匹配换行符 \t 匹配制表符 \W 除了数字. 字母 下划线 \D ...
- 转:OSGi 入门篇:模块层
OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...
- 玩转X-CTR100 l STM32F4 l ESP8266串口WIFI模块
我造轮子,你造车,创客一起造起来!更多塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]- ESP8266是一款非常火的WIFI模块,性价 ...
- ansible基本使用教程
转载请注明出处http://www.cnblogs.com/chenxianpao/p/7360349.html 一. 介绍 1. 简介 ansible是新出现的自动化运维工具,基于Pytho ...
- Odoo(OpenERP)应用实践:代发货管理
原文地址:http://blog.csdn.net/wangnan537/article/details/47091857 有些分销商,在买家下单后才向供应商采购产品,并由供应商直接发货给客户.这种模 ...
随机推荐
- 前端学习 之 Bootstrap(二)
一.代码 内联代码:用<code>包裹,但是需要用<和>表示尖括号. 键盘输入:用<kbd>包裹表示键盘输入的内容. 多行代码:用<pre>包裹多行代码 ...
- Linux配置防火墙端口 8080端口
1.查看防火墙状态,哪些端口开放了 /etc/init.d/iptables status 2.配置防火墙 vi /etc/sysconfig/iptables ################# ...
- Android开启相机预览获取Yuv视频流数据
自定义SurfaceView 主要步骤: 实现SurfaceHolder.Callback接口,创建SurfaceView的生命周期 实现Camera.PreviewCallback接口,创建预览回调 ...
- 使用 new XMLHttpRequest() 制作下载文件进度条
mui 进度控件使用方法: 检查当前容器(container控件)自身是否包含.mui-progressbar类: 当前容器包含.mui-progressbar类,则以当前容器为目标控件,直接显示进度 ...
- 使用 float 存储小数?
很多程序员就会使用 float 类型来存储小数.sql 的 float 类型和其他大多数编程语言的 float 类型一样, 根据IEEE 754 标准使用二进制格式编码实数数据. 但是很多程序员并不清 ...
- C#核心基础--类的声明
C#核心基础--类的声明 类是使用关键字 class 声明的,如下面的示例所示: 访问修饰符 class 类名 { //类成员: // Methods, properties, fields, eve ...
- java 结合反射、泛型、注解获取泛型对象
由于自己也不是特别的理解,不能做过多的解释,因为这些是问过老师做出来的,我还没有学到这里.如果有解释错误的 指出来我改正一下.见谅~(如果学到这里了,会完善) 工具类(SQLUtil)核心代码: pa ...
- 洗礼灵魂,修炼python(70)--爬虫篇—补充知识:json模块
在前面的某一篇中,说完了pickle,但我相信好多朋友都不懂到底有什么用,那么到了爬虫篇,它就大有用处了,而和pickle很相似的就是JSON模块 JSON 1.简介 1)JSON(JavaScrip ...
- emacs 配置.emacs
emacs 配置.emacs (require 'package) (package-initialize) (add-to-list'package-archives '("melpa&q ...
- IEEE754浮点数的表示方法
https://blog.csdn.net/K346K346/article/details/50487127