python模块--re模块
常用的正则表达式模式:
| . | 匹配除换行符以外的任意字符 | 
| \d | 匹配一个数字字符。等价于 [0-9]。 | 
| \D | 匹配一个非数字字符。等价于 [^0-9]。 | 
| \s | 匹配任何空白字符,包括空格、制表符、换页符等。等价于 [ \f\n\r\t\v]。 | 
| \S | 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 | 
| \w | 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。 | 
| \W | 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。 | 
| \b | 字符的开始或结束。\b\w{6}\b 匹配刚好6个字符的单词 | 
| ^ | 匹配字符串开头 | 
| $ | 匹配字符串的结束 | 
| [^] | 取反,匹配不在[]之中的字符, 例如 [^xyz] 匹配除了x,y,z以外的字符 | 
| [] | [xyz],字符x或者y或者z | 
| ? | 匹配0个或1个 | 
| * | 匹配0个或多个 | 
| + | 匹配1个或多个 | 
| {} | {m}重复m次,{m,}重复m到多次,{m,n}重复m到n次 | 
| () | 分组 | 
| (?P<name>exp) | 将exp匹配到的文本命名为name | 
更多详细使用可参考:https://www.jb51.net/tools/zhengze.html
re.match 匹配字符串的开始,如果不符合则返回None
re.match(pattern, string, flags=0)
>>> re.match('[a-z]','1aaa')     # 没匹配到返回None
>>> re.match('[a-z]','a1aaa')
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.match('[a-z]','a1aaa').group()   #group()匹配到的字符串
'a'
>>> re.match('[a-z]','a1aaa').span()
(0, 1)
re.search 匹配整个字符串,直到找到一个匹配
>>> re.search('[a-z]','1aaa')
<_sre.SRE_Match object; span=(1, 2), match='a'>
findall 匹配所有符合正则的字符串,以列表形式返回
>>> re.findall('[a-z]','ab11cd22ef33')   #匹配所有符合正则的字符串,并返回列表
['a', 'b', 'c', 'd', 'e', 'f']
>>> re.findall('[a-z]','')    #没有匹配到则返回空列表
[]
>>> pat = re.compile(r'\d+')
>>> pat.findall('aa 12 bb34 de')
['', '']
>>> pat.findall('aa 12 bb34 de56')
['', '', '']
>>>
>>> pat.findall('aa 12 bb34 de56',0,5)
['']
finditer 类似findall 将结果作为一个迭代器返回
>>> pattern = re.compile(r'\D+')
>>> i = pattern.finditer('ab-11cd22ef33')
>>> i
<callable_iterator object at 0x7f8fc4d38908>
>>> for x in i:
... print(x)
...
<_sre.SRE_Match object; span=(0, 3), match='ab-'>
<_sre.SRE_Match object; span=(5, 7), match='cd'>
<_sre.SRE_Match object; span=(9, 11), match='ef'>
compile 函数 编译正则表达式。
re.compile(pattern[, flags])
flags:匹配模式 re.I 忽略大小写 re.M 多行模式等
>>> pattern = re.compile(r'\D+') # 先对正则进行编译,然后再匹配
>>> pattern.search('ab-11cd22ef33').group()
'ab-'
>>> pattern.search('ab-11cd22ef33',0,2).group()
'ab'
>>>
>>> pattern.search('ab-11cd22ef33').start()
0
>>> pattern.search('ab-11cd22ef33').end()
3
>>> pattern.search('ab-11cd22ef33').span()
(0, 3)
split 按照正则匹配的子串将字符串分割并返回列表
>>> re.split(r'\*','a*b*c')
['a', 'b', 'c']
re.sub 查找替换
re.sub(pattern, repl, string, count=0)
>>> re.sub(r'[^a-z]','*','ab11cd22ef33')
'ab**cd**ef**'
>>> re.sub('\D','*','ab11cd22ef33')
'**11**22**33'
(?P<name>exp)
>>> m = re.search('(?P<year>[0-9]{4})','this is 2018 yeara')
>>> m.group('year')
''
>>> m = re.search('(?P<year>[0-9]{4})/(?P<month>[0-9]{2})','test 2012/12 year haha')
>>> m.group()
'2018/08'
>>> m.group('year')
''
>>> m.group('month')
''
python模块--re模块的更多相关文章
- python之platform模块
		
python之platform模块 ^_^第三个模块从天而降喽!! 函数列表 platform.system() 获取操作系统类型,windows.linux等 platform.platform() ...
 - python之OS模块详解
		
python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...
 - python之sys模块详解
		
python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...
 - 学习PYTHON之路, DAY 6 - PYTHON 基础 6  (模块)
		
一 安装,导入模块 安装: pip3 install 模块名称 导入: import module from module.xx.xx import xx from module.xx.xx impo ...
 - [Python Day5] 常用模块
		
目录: 1.模块介绍 2.time & datetime 3.random 4.OS 5.sys 6.shutil 7.json & pickle 8.shelve 9.xml 处理 ...
 - python基础之模块
		
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合. 而对于一个复杂的功能来,可能需要多个函数 ...
 - linux下python调用c模块
		
在C调用Python模块时需要初始化Python解释器,导入模块等,但Python调用C模块却比较简单,下面还是以helloWorld.c 和 main.py 做一说明: (1)编写C代码,hel ...
 - Python学习之模块进程函数详解
		
今天在看<Beginning Linux Programming>中的进程相关部分,讲到Linux几个进程相关的系统函数: system , exec , fork ,wait . Pyt ...
 - python基础——第三方模块
		
python基础——第三方模块 在Python中,安装第三方模块,是通过包管理工具pip完成的. 如果你正在使用Mac或Linux,安装pip本身这个步骤就可以跳过了. 如果你正在使用Window ...
 - python基础——使用模块
		
python基础——使用模块 Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用. 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env ...
 
随机推荐
- 浅谈Java对象的equals方法
			
相等与同一: 如果两个对象具有相同的类型以及相同的属性值,则称这两个对象相等. 如果两个引用对象指的是同一个对象,则称这两个变量同一. ==是一个比较运算符,基本数据类型比较的是值,引用数据类型比较的 ...
 - css3之动画属性transform、transition、animation
			
工作当中,会遇到很多有趣的小动画,使用css3代替js会节省工作量,css3一些属性浏览器会出现不兼容,加浏览器的内核前缀 -moz-. -webkit-. -o- 1.transform rotat ...
 - python摸爬滚打之day26----网络编程之socket
			
1.网络通信原理 互联网的本质就是一系列的网络协议, 统称为互联网协议. 互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准. 互联网协议按照功能不同分为 ...
 - IIS支持apk文件
			
随着智能手机的普及,越来越多的人使用手机上网,很多网站也应手机上网的需要推出了网站客户端,.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件 ...
 - Golang--选择、循环语法总结
			
1.判断语句if 条件表达式没有括号 支持初始化表达式 初始化语句的变量自在本block内有效 if a,b,c := 1,2,3;a+b+c>6 { fmt.Println("hah ...
 - selenium 淘宝登入反爬虫解决方案(亲测有效)
			
前言 目前在对淘宝进行数据爬取的时候都会碰到,登入时的滑块问题,无论是手动还是脚本都不成功.这里的很重要一个原因是很多的网站都对selenium做了反爬虫机制.接下来是笔者参考网上的网友们的方法亲自测 ...
 - php 实现简拼
			
<blockquote>model::::::::::::::::::::::::::::: function getFirstCharter($str){if(empty($str)){ ...
 - form提交所有数据
			
HTML: <div class="panel"> <div class="panel-body"> <h3>完善简历< ...
 - 下拉选择插件select2赋值、创建、清空
			
在select2中,设置指定值为选中状态 $("#select2_Id").val("XXXXX").select2()或者$("#latnId&qu ...
 - bootstrap-wysiwyg这个坑
			
但是用wysiwyg也是费了我不少的精力,特别是在图片上传上,下面做一些总结. 1.引入文件 wysiwyg号称只有5kb,但是实际上是将其他的依赖文件在cdn上用外链链接进来了,有以下几个文件: c ...