深圳旮旯打滚记

Python学习第十天

正则表达式

re.match()函数re.match(pattern,string,flags=0)

import re
line = “aegoog8897”
reg = “^a.*7$”# ^代表一什么开头 .表示匹配任何内容 * 表示重复任意内容 $表示一什么结尾 # ()表示提取子串 ?表示非贪懒模式匹配 Python默认是贪懒匹配从右边匹配# + 表示某个字符至少出现一次 {} 表示某个字符出现的次数 例如:{2,5}表示至少出现2次最多出现5次 # {2,}表示至少2次及2次以上# | 代表或的关系满足一个条件就行 [] 代表任何包含在[]内的都可以匹配# \s 代表匹配空格 \S 匹配非空格 \w 匹配任意字符 \W 匹配非满足任意字符 \d表示匹配数字# 因此.*表示任意匹配除换行符(\n、\r)之外的任何单个或者多个字符
if re.match(reg, line,re.I): # re.I:忽略大小写
print(“yes”)
else:
print(“No”)
print(re.match(‘www’,‘www.xxx.com’).span()[1]) # 在起始位置匹配 span() start() end()去获取匹配的字符串中搜索字符串出现的索引
print(re.match(‘www’,‘www.xxx.com’)) # 不在起始位置匹配

str1 = “11234b1241351b12314n123123b123b1b231”
mathReg = “.*(b.*b).(b.b)” # 分组符号
math_obj = re.match(mathReg,str1)
if math_obj:
print(math_obj.group(1))
else:
print(“no succes!”)

str2 = “11234b1b241351b12314n123123b123b1231”
mathReg = “.(b.b)."
mathReg = ".
(b.+b)."
mathReg = ".
(b.1?b).*” # ?:0个或1个 +:一个或多个 *:任意多个
math_obj = re.match(mathReg,str2)
if math_obj:
print(math_obj.group(1))
else:
print(“no succes!”)

str3 = “11234b1b241351b12314n123123b123b1231”
mathReg = “.(b.{3,6}b).” # 表示范围3~6个
math_obj = re.match(mathReg,str3)
if math_obj:
print(math_obj.group(1))
else:
print(“no succes!”)

str4 = “hi\thello”
mathReg = “(hi[A-Za-z0-9_]hello)”
math_obj = re.match(mathReg,str4)
if math_obj:
print(math_obj.group(1))
else:
print(“no succes!”)

re.match()与re.search()的区别

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
import re
line = “Cats are smarter than dogs”;
matchObj = re.match( r’dogs’, line, re.M|re.I)
if matchObj:
print ("match --> matchObj.group() : ", matchObj.group())
else:
print (“No match!!”)
matchObj = re.search( r’dogs’, line, re.M|re.I)
if matchObj:
print ("search --> matchObj.group() : ", matchObj.group())
else:
print (“No match!!”)

re.finditer()函数

import re
it = re.finditer(r"\d+",“12a32bc43jf3”) # 提取数字
for match in it:
print (match.group(0) )

re.sub()

re.sub(pattern, repl, string, count=0, flags=0)
phone = “2004-959-559 # 这是一个电话号码”# 移除非数字的内容
num = re.sub(r’\D’, “”, phone)
print ("电话号码 : ", num)

re.compile()函数

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
re.compile(pattern[, flags])
import re
pattern = re.compile(r’\d+’) # 用于匹配至少一个数字
m = pattern.match(‘one12twothree34four’) # 查找头部,没有匹配
print(m)
n=pattern.search(‘one12twothree34four’)
print(n.group(0))

re.findall()

re.findall(string[, pos[, endpos]])
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
import re
pattern = re.compile(r’\d+’) # 查找数字
result1 = pattern.findall(‘xxx 123 yyy 456’)
result2 = pattern.findall(‘xxx88sz123huawei456’, 0, 19) # 0表示起始位置 19表示结束位置

print(result1)
print(result2)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值