正则表达式提取字符串

正则表达式提取字符串

工作中遇到一个这样的需求:需要从一个字符串中提取若干个个子字符串,要求该子字符串中:至少含有一个数字和一个字母且仅有数字和字母组成,且长度大于3位

例如以下字符串中,需要提取出关键词’350T’, ‘320K5’

“2016这是一段测试文字350T,需要320K5匹配型号”

正则匹配的关键代码如下:

content = '这是一段测试文字350T,需要320K5匹配型号'
pattern = r'(?=[A-Za-z\d]*[a-zA-Z])(?=[A-Za-z\d]*\d)[A-Za-z\d]{3,}'
print(re.findall(pattern, content))
打印结果:

['350T', '320K5']

正则表达式拆分含义:

  • ?=pattern :正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用
  • [A-Za-z\d] :匹配大小写字母和数字
  • *:量词,表示0~n个,

?=[A-Za-z\d][a-zA-Z] =意思就是必须匹配一个字母,该字母前面只能是0个或n个数字或字母;
?=[A-Za-z\d]
[\d] 同理,就是必须匹配一个数字,该数字前面只能是0个或n个数字或字母;
[A-Za-z\d]{3,} 表示匹配3位及以上的字母和数字。

合起来表达的意思就是 匹配3位及以上由数字和字母组成的字符串,该字符串包含至少一个数字和一个字母。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值