python3笔记二十三:正则表达式之其他函数
一:学习内容
- re.split函数
- re.finditer函数
- re.sub函数
- group()分组
- re.compile函数
二:字符串切割---re.split函数
需要导入包:import re
1.格式:re.split(pattern,string,flags=0)
2.功能:字符串切割
3.参数说明:
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标识位,用于控制正则表达式的匹配方式
4.举例:
str1 = "test is a good girl"
print(str1.split(" "))
print(re.split(r" +",str1)) #可以看到一次性将所有空格都分隔掉了

三:re.finditer函数
需要导入包:import re
1.格式:re.finditer(pattern,string,flags=0)
2.功能:与findall类似,扫描整个字符串,返回的是一个迭代器
3.参数说明:
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标识位,用于控制正则表达式的匹配方式
4.举例:
str3 = "test is a good girl!test is a good girl!test is a good girl!"
d = re.finditer(r"(test)",str3)
while True:
try:
l = next(d)
print(l)
except StopIteration as e:
break

四:字符串的替换和修改---re.sub函数和re.subn函数
需要导入包:import re
1.格式:sub(pattern, repl, string, count=0, flags=0) 和 subn(pattern, repl, string, count=0, flags=0)
2.功能:在目标字符串中以正则表达式的规则匹配字符串,可以指定替换的次数,如果不指定,替换所有的匹配字符串
3.参数说明:
pattern:正则表达式(规则)
repl:指定的用来替换的字符串
string:目标字符串
count:最多替换次数
4.sub和subn区别:sub()返回一个被替换的字符串,subn()返回一个元组(第一个元素是被替换的字符串,第二个元素表示被替换的次数)
5.举例:
str5 = "test is a good good good girl"
print(re.sub("(good)","nice",str5))
print(re.sub("(good)","nice",str5,count=2))
print(type(re.sub("(good)","nice",str5)))

print(re.subn("(good)","nice",str5))
print(re.subn("(good)","nice",str5,count=2))
print(type(re.subn("(good)","nice",str5)))

五:分组-group()
需要导入包:import re
1.概念:具有提取子串的功能,用()表示的就是分组
2.举例:
str6 = "010-87237214"
m =re.match(r"(\d{3})-(\d{8})",str6)
#使用序号获取对应组的信息,group(0)一直代表的原始字符串
print(m.group(0))
print(m.group(1))
print(m.group(2))
#查看匹配的各组的情况
print(m.groups())

3.?P<组名> 给组起名字
str7 = "010-87237214"
m =re.match(r"(?P<first>\d{3})-(?P<last>\d{8})",str7)
print(m.group(0))
print(m.group(1))
print(m.group("first"))
print(m.group(2))
print(m.group("last"))
#查看匹配的各组的情况
print(m.groups())

六:编译-compile()
需要导入包:import re
1.概念:当我们使用正则表达式时,re模块会干两件事:1、编译正则表达式,如果正则表达式本身不合法,会报错;2、用编译后的正则表达式去匹配
2.格式:re.compile(pattern,flags=0)
3.参数说明:
pattern:匹配的正则表达式
flags:标识位,用于控制正则表达式的匹配方式,它的值有:
re.I 忽略大小写
re.L 做本地化识别
re.M 多行匹配,影响^和$
re.S 使.匹配包括换行符在内的所有字符
re.U 根据Unicode字符集解析字符,影响\w \W \b \B
re.X 使我们以更灵活的格式理解正则表达式
4.举例:
pat = r"1[3456789]\d{9}"
re_tele = re.compile(pat)
str = "手机号码19966662112,fldsafdls18877221999lfalalsfdk13988218921dfsa"
re_tele.findall(str)

python3笔记二十三:正则表达式之其他函数的更多相关文章
- python3笔记二十三:正则表达式之元字符
一:学习内容 匹配单个字符与数字:..[].^.\d.\D.\w.\W.\s.\S 匹配锚字符(边界字符):^.$.\A.\Z.\b.\B 匹配多个字符:(xyz) .x?.x*..*.x+.x{n} ...
- python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码
python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...
- (C/C++学习笔记) 二十三. 运行时类型识别
二十三. 运行时类型识别 ● 定义 运行时类型识别(Run-time Type Identification, RTTI) 通过RTTI, 程序能够使用基类的指针或引用来检查(check)这些指针或引 ...
- python3笔记二十二:正则表达式之函数
一:学习内容 re.match函数 re.search函数 re.findall函数 二:re.match函数 需要导入包:import re 1.格式:match(pattern,string,fl ...
- 学习笔记二十三——字符函数库cctype【转】
本文转载自: 字符函数库cctype 在头文件cctype(ctype.h)中定义了一些函数原型,可以简化输入确定字符是否为大写字母.数字.标点符号等工作. 例如: 如果ch是一个字母,则isalph ...
- angular学习笔记(二十三)-$http(1)-api
之前说到的$http.get和$http.post,都是基于$http的快捷方式.下面来说说完整的$http: $http(config) $http接受一个json格式的参数config: conf ...
- python3笔记二十四:Mysql数据库操作命令
一:学习内容 Mysql操作命令:启动服务.停止服务.连接数据库.退出数据库.查看版本.显示当前时间.远程连接 数据库操作命令:创建数据库.删除数据库.切换数据库.查看当前选择的数据库 表操作命令:查 ...
- python3笔记二十一:时间操作datetime和calendar
一:学习内容 datetime calendar 二:datetime 1.模块说明:可以理解为datetime基于time进行了封装,提供了各种使用的函数,datetime模块的接口更直接,更容易调 ...
- python3笔记十六:python匿名函数和高阶函数
一:学习内容 lambda函数 map函数与reduce函数 filter函数 sorted函数 二:匿名函数-lambda 1.概念:不使用def这样的语句去定义函数,使用lambda来创建匿名函数 ...
随机推荐
- 北上广Java开发月薪20K往上,该如何做,需要会写什么
这个问题可能很多人会说这只是大企业或者互联网企业工程师才能拿到.也许是的,小公司或者非互联网企业拿两万的不太可能是码农了,应该已经转管理.还有区域问题,这个不在我的考虑范围内,因为这方面除了北上广深杭 ...
- Python基础教程之dict和set
1. dict Python中的dict等于js中的 map ,使用键-值(key-value)存储,具有极快的查找速度. 如果 我们要根据同学的姓名去查找他的成绩在不用dict的情况下.就需要两个l ...
- PIL:处理图像的好模块
介绍 PIL是一个专门用来处理图像的模块,可以对图象进行各种各样的变换 打开一张图片 from PIL import Image # 调用Image下的open方法,即可打开一张图片 # 得到的im便 ...
- CentOS7使用阿里云的yum源
替换成阿里云的yum源速度更快一些,替换很简单,简单记录一下步骤 1.备份原来的yum源 sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repo ...
- 对于国嵌上学期《一跃进入C大门》Mini2440的代码修正
摸索了几天,加了无数的群,病急乱投医式地问了好多个人,终于改对了代码. 下面先贴出给的范例代码 这是C语言代码,是没有错的. 那么出错的地方就在start.S部分 很明显,MPLLCON地址错误,正确 ...
- Linux进程管理工具之ps
1.PS进程管理指令 ps -aux USER:用户名称 PID:进程号 %CPU:进程占用CPU的百分比 %MEM:进程占用物理内存的百分比 VSZ:进程占用的虚拟内存大小(单位:KB) RS ...
- server version for the right syntax to use near 'USING BTREE 数据库文件版本不合导致的错误
MySQL 返回:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MyS ...
- Django学习系列10:保存用户输入——编写表单,发送POST请求
要获取用户输入的待办事项,发送给服务器,这样才能使用某种方式保存待办事项,然后在显示给用户查看. 上次运行测试指出无法保存用户的输入.现在,要使用HTML post请求. 若想让浏览器发送POST请求 ...
- spring-data-neo4j 4.2.4release文档概要
Neo4j是一种开源的NoSQL图数据库,将数据以图(把一个个实体当作节点,连接节点的边表示节点间的关系)的形式保存,Neo4j也支持ACID事务管理.关系型数据库数据访问采用的是ORM(对象关系映射 ...
- fastjson简单使用demo,@JSONField注解属性字段上与set、get方法上。实体类toString(),实体类转json的区别;_下划线-减号大小写智能匹配
一.demo代码 @JSONField注解属性字段上与set.get方法上.使用@Data注解(lombok插件安装最下方),对属性“笔名”[pseudonym]手动重写setter/getter方法 ...