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 有些分销商,在买家下单后才向供应商采购产品,并由供应商直接发货给客户.这种模 ...
随机推荐
- 读书笔记--Android Gradle权威指南(上)
本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 最近看了一本书<Android Gradle 权威指南>,对于 Gradle 理解又更深了,但不想过段时间就又忘光了,所 ...
- JavaScript Array常用属性和方法
Array的length属性可以通过赋值改变,但这样会导致Array原有的大小发生改变. var a = ["I", "Love", "You&quo ...
- thinkphp 使用paginate分页搜索带参数
最近做项目发现使用paginate分页,搜索的时候点下一页搜索条件就变没了,所以在网上找了找一些方法,有的说是使用Page类,但是用习惯了paginate,再用Page不习惯,找到了一个方法,可以使用 ...
- Windows 10文件夹Shirt+鼠标右键出现“在此处打开命令窗口”
Windows 10文件夹Shirt+鼠标右键出现“在此处打开命令窗口” Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directo ...
- spring Boot 出现:org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplication ...
- ASP.NET MVC 扩展方法
一.扩展方法的语法 在视图中使用扩展方法的时候 如果扩展方法定义的类在其他命名空间,需要首先引用该命名空间,才能使用该扩展方法 static class 静态类名 ...
- vmWare 虚机文件不能启动的事故处理
由于公司停电,导致几十台vmWare虚拟机器启动报错. 错误:Failed to power on virtual machine XXX. Failed to lock the file Click ...
- CentOS 7.0下安装Python3.6
CentOS 7.0自带Python2.7 安装Python3.6步骤 1.安装依赖 yum install -y zlib-devel bzip2-devel openssl-devel ncurs ...
- ACDSee清除旧版本残余
新建记事本,输入以下内容: reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\ACD Systems" /f reg delete "HKE ...
- mysql中的升序和降序以及一个字段升序和一个字段降序
mySql中,升序为asc,降序为desc.例如: 升序:select * from 表名 order by 表中的字段 asc(mysql中默认是升序排列,可不写) 降序:select ...