首页 技术 正文
技术 2022年11月8日
0 收藏 965 点赞 1,409 浏览 2225 个字

目录

re 模块

1. 正则表达式

\w  匹配字母(包含中文)或数字或下划线
\W 匹配非字母(包含中文)或数字或下划线
\s 匹配任意的空白符
\S 匹配任意非空白符
\d 匹配数字
\D 匹配非数字
\A 从字符串开头匹配
\z 匹配字符串的结束,如果是换行,只匹配到换行前的结果
\n 匹配一个换行符
\t 匹配一个制表符
^ 匹配字符串的开始
$ 匹配字符串的结尾
. 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
[] 匹配字符组中的字符
[^] 匹配除了字符组中的字符的所有字符
* 匹配0个或者多个左边的字符。
+ 匹配一个或者多个左边的字符。
? 匹配0个或者1个左边的字符,非贪婪方式。
{n} 精准匹配n个前面的表达式。
{n,m} 匹配n到m次由前面的正则表达式定义的片段,贪婪方式
ab 匹配a或者b
() 匹配括号内的表达式,也表示一个组

2. 匹配模式

import re
s = "宝元-meet_123daskd nnnmmmadda"
print(re.findall("\w",s))#查找数字,字母(中文),下划线
print(re.findall("\W",s))#查找非数字,字母(中文),下划线print(re.findall("\s",s))#查找任意空格,换行符,制表符
print(re.findall("\S",s))#查找非任意空格,换行符,制表符print(re.findall("\d",s))#查找数字
print(re.findall("\D",s))#查找非数字print(re.findall("^宝元",s)) #查找是否已什么开头,没有返回列表中空字符串
print(re.findall("a$",s)) #查找是否以什么结尾的内容print(re.findall("\n",s)) #查找换行符
print(re.findall("\t",s)) #查找制表符print(re.findall("m.e",s)) # .只能匹配非换行符的任意一个内容
print(re.findall("m.e",s,re.DOTALL)) #.匹配任意一个内容print(re.findall("[a-z]",s))# 小写的a,z
print(re.findall("[a-z0-9]",s)) # 小写的a,z和数字 0,9
print(re.findall("[^0-9]",s)) # [^0-9] 查找非0-9的内容print(re.findall("m*",s)) # * 匹配0个或多个 [贪婪匹配],不是的用空字符串添加
print(re.findall("me+",s)) # me,mee,meee,meeeee...
# + 匹配1个或多个 [贪婪匹配] 不添加空字符串
print(re.findall("m?",s)) # ? 匹配 0个或1个 [非贪婪匹配]print(re.findall("n{3}",s)) # n{3} n重复3次 == nnn
print(re.findall("s{1,3}",s)) # s{1,3} s ss sss
# 指定最少多少次,最多多少次print(re.findall("m|s",s)) # m或者s
# 分组()
s = "meet_assdf_mssst_(.)mmns_aaamaaatmsssssstt"
print(re.findall("m(.+)t",s))
# ['eet_assdf_mssst_(.)mmns_aaamaaatmsssssst']
print(re.findall("m(.+?)t",s))
#['ee', 'sss', 'mns_aaamaaa', 'ssssss']
print(re.findall("m(?:..)t",s)) #['meet'] 将mt也打印出
# 取出以_sb结尾的
s = 'alex_sb ale123_sb wu12sir_sb wusir_sb ritian_sb 的 alex wusir '
print(re.findall("\w+_sb",s))
print(re.findall("[a-z]+_sb",s)) # 不包含数字

3. 常用方法

# search:  (从任意位置找)找到1个后就停止查找了,从字符串中进行查找.找到后返回的是一个对象,查看元素.group()
print(re.search("me",s).group())
# match:  找到1个后就停止查找了,只从字符串的开头查找.找到后返回的是一个对象,查看元素.group()  没有返回None
print(re.match("me",s).group())
# split: 分割,可按照任意分隔符进行分割
print(re.split("[#,:!*]",s))
# sub: 替换
print(re.sub("旧","新",s))
# compile: 定义匹配规则
obj = re.compile("\w")
print(obj.findall("meet_宝元"))
# finditer: 返回一个迭代器地址 ,可用.group() 或者for读取
g = re.finditer("\w","meet_宝元")
print(next(g).group())
for i in g:
print(i.group())
# 给分组起名字
m(?P<名字>\w+)t.group("名字")
print(re.search("(?P<a>\w+)dfa","asbsadfasdfa")
.group("a")) # asbsadfas
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,082
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,557
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,406
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,179
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,815
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898