Python正则提取字符串

import re

str1 = 'sddf3gwrw'
r = re.match('\d',str1) #匹配单个数字
print(r)

r = re.search('\d',str1)
print(r)
print(r.group())

str1 = 'sddf3g889wrw'
r = re.match('\d+',str1)
print(r)
str1 = 'sddf3999g889wrw'
r = re.search('\d+',str1) # 匹配连续多个数字
print(r)
str1 = 'sddf3g889wrw'
r = re.match('\d*',str1) #匹配0个或者多个连续数字,没有匹配到数字,返回空字符串""
print(r)
str1 = 'sddf3g889wrw'
r = re.search('\d{2}',str1) # 匹配2个数字
print(r)

str1 = 'sddf3g88967wrw'
r = re.search('\d{2,4}',str1) # 匹配2-4个数字
print(r)

str1 = 'sddf3g88967wrw'
r = re.search('\d{2}|\d{4}',str1) # 匹配2个或4个数字
print(r)
str1 = 'sddf3g88967wrw'
r = re.search('\D{2}|\d{4}',str1) # 匹配2个非数字或4个数字
print(r)

str1 = 'sddf3g88967wrw'
r = re.search('[a-z]{2}|\d{4}',str1) # 匹配2个小写字母或4个数字
print(r)
str1 = 'sddf3g88967wrw'
r = re.search('[0-9]{2}|\d{4}',str1) # 匹配2个数字或4个数字
print(r)
str1 = '37sddf3g88967wrw'
r = re.search('^[0-9]+',str1) # 从字符串起始位置匹配1个或多个数字,即字符串以数字开头
print(r)

str1 = '37sddf3g88967wrw'
r = re.search('[^0-9]+',str1) # 匹配1个或多个非数字,[^0-9]表示非数字
print(r)
str1 = '37sddf3g88967wrw9'
r = re.search('[0-9]+$',str1) # 匹配字符串最后1个或多个非数字,即字符串以1个或多个数字结尾
print(r)
str1 = '37s ddf3g88967wrw9'
r = re.search('\s',str1) # 匹配换行符、tab符、空格等空白字符
print(r)

# 使用正则表达式判断字符串是否IP地址
ip = '192.168.99.99'
zhengze = '^((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$'
r = re.match(zhengze,ip)
print(r)

str1 = '37sddfPYthon67wrw9'
r = re.compile('[Pp][Yy]thon') #  匹配Python或python
s = r.search(str1)
print(s)

# findall(),查找字符串中符合正则的字符串,返回列表
str1 = '37sddfPYthon-67wrw9'
n_list = re.findall('\d+',str1)
print(n_list)

str1 = '37sddfPYthon-67wrw9'
n_list = re.findall('\d+|-\d+',str1) #查找正数或负数
print(n_list)

str1 = '37sd**dfPYth&&on-67w$$rw9'
n_list = re.findall('\W+',str1) #查找非数字非英文
print(n_list)
str1 = '37sd**dfPYth&&on-67w$$rw9'
n_list = re.findall('[pP]ython',str1) #匹配不到字符串返回空列表
print(n_list)

str1 = '37sd**dfPYth&&on-67w$$rw9'
new_str  = re.sub('\W+',"",str1) #将非数字非英文替换为空
print(new_str)

str1 = 'sdfwe23df23568swg'
new_str = re.sub('\d+','***',str1)
print(new_str)

#split(),按照正则表达式分隔字符串
str1 = 'sd;fwe:,re.tr'
s_list = re.split('[;:.,]+',str1)
print(s_list)

s_list = re.split('\W+',str1)
print(s_list)

s_list = re.split('[^a-z]+',str1)
print(s_list)

str1 = 'sd;fwe:,re.tr'
s_list = re.findall('[^;:.,]+',str1)
print(s_list)

# 重点正则表达式: (.+?),可以提取两个字符串之间的字符串
str1 = 'sdfglweeryrtlyuru'
s_list = re.findall('gl(.+?)r',str1) # 提取str1字符串中 gl和ry之间的字符串
print(s_list)

str1 = 'sdfglweeryrtlyuru'
s_list = re.findall('gl(.+)',str1) # 提取str1字符串中 gl后面所有字符
print(s_list)
str1 = 'sdfglweeryrtlyuru'
s_list = re.findall('(.+)ly',str1) # 提取str1字符串中 ly之前所有字符
print(s_list)
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值