贴几个网站:
这是官方文档:
https://docs.python.org/3.5/library/re.html
这是讲格式化录入的几个博客:
推荐先看这个:https://www.cnblogs.com/xiaxiaoxu/p/9749655.html
再看这个:https://blog.youkuaiyun.com/u010138758/article/details/70163944
余下的当做没看懂上面几个的补充(有时间我自己整理一下)
https://www.cnblogs.com/mehome/p/9513492.html
http://www.cppcns.com/jiaoben/python/230100.html
https://blog.youkuaiyun.com/xiaochendefendoushi/article/details/81335597
https://www.cnblogs.com/misswangxing/p/10736310.html
读源码去了解re原理是啥博客的:https://www.jb51.net/article/164276.htm
这是我的总结:(总结了常见用法)
import re #导入处理的库
ss=input("输入想处理的字符串\n") #比如:3year 5month---11day
#第一种方式:
pattern = re.compile(r"(\d+)year (\d+)month---(\d+)day") #定义一个录入格式(格式是一个类:Pattern),并将这个格式生成一个对应的对象,名叫pattern
# 第一个字符是 r,表示 raw string 原生字符,意在声明字符串中间的特殊字符不用转义
# 接着由 “ ”引起来的内容即为录入格式
ans=pattern.match(ss)
print( ans.groups() ) #groups()的意思: 首先已知ans是字符串匹配格式后的东西,
# .groups()的目的就是把匹配后得到的东西转换成字典形式,字典中的各个元素按顺序就是匹配后得到的东西
# 为了不乱其实也可 tt=ans.groups() 然后 print(tt)
#第二种方式:
ss="hello! aaa im tt" # ss="hello aaa im tt" 则为正确的匹配对象
ans=re.match(r"([a-z]+) ([a-z]+) ([a-z]+) ([a-z]+)",ss,re.I) #这里直接用re库里的match函数了,同样也是格式化录入
# 第一个字符是 r,表示 raw string 原生字符,意在声明字符串中间的特殊字符不用转义
# 接着由 “ ”引起来的内容即为录入格式 :
# ()代表对应字典里的一个元素,[]中表示的意思字符集,一个字符的集合,表示可以匹配其中任意一个字符
# 第三个参数是代表要处理的字符串,这里是 ss
# 第四个参数可加可不加,有需要再加。
# 常用的就是这个:re.I 意思是:使匹配的字符串对大小写不敏感
if ans : #若上一条语句匹配不成功则ans值为None,若匹配成功则值非空 ;判断一下是否匹配成功则可以进行错误提示
print("匹配成功")
a=ans.group() #这里用的是 .group(),其实 .group()就相当于把格式化录入后得到的东西合成一个字符串
print(a)
print(a[0])
a=ans.groups() #就是和 .group()比对一下
print(a)
print(a[0])
else :
print(ans)
print("匹配失败")
#如果说匹配的部分只能匹配一部分那么,会有此情况:
ss="hello aaa im tt"
ans=re.match(r"([a-z]+) ([a-z]+) ",ss,re.I)
if ans:
a=ans.groups()
print(a) #输出:('hello', 'aaa') ,“im! tt”被忽略
else :
print("匹配失败1") #并不会报错
ss="hello aaa! im! tt"
ans=re.match(r"([a-z]+) ([a-z,!]+) ",ss,re.I) #注:[]各类字符之间用 , 相隔开
if ans:
a=ans.groups()
print(a) #输出:('hello', 'aaa!') ,“im! tt”被忽略
else :
print("匹配失败2") #并不会报错
#第三种方式:python的录入与
ss="hello+aa 6789 ~imt!t"
ans=re.match(r"(\S+)\+(\S+) (\d+) ~(\S+)",ss) #写成\+是因为+在格式化录入时有特殊含义,需要用\转义
#常用的 : \s,\S 均等同于 c语言的 %s ; \d等同于 c语言的 %d
print(ans.groups())
#我大概率会经常使用这个,所以再举一个例子:
#输入日期,并计算今年过了多少天,,,,
ss=input("请输入日期:") #格式举例:2015year 6month 7day
tt=re.match(r"(\d+)year (\d+)month (\d+)day",ss)
res=tt.groups()
year=int(res[0])
month=int(res[1])
day=int(res[2])
#之后运算步骤省略
参考:
http://www.cppcns.com/jiaoben/python/230100.html
https://www.cnblogs.com/mehome/p/9513492.html
本文详细介绍Python中正则表达式的应用,包括多种匹配方式、格式化录入技巧及实例解析,帮助读者掌握正则表达式的常见用法。
696

被折叠的 条评论
为什么被折叠?



