如何利用python正则表达式匹配版本信息


Posted in Python onDecember 09, 2020

问题描述:

用正则表达式提取文本中的版本号信息,比如说:10.1.1 9.5 10.10.11

并实现在文本中(.txt)读入,写出到文本(.txt)

首先构造正则表达式:

pattern=Vpat=“I.(I.)*I”

构造正则表达式:r'\d+\.(?:\d+\.)*\d+'

import re
pattern = r'\d+\.(?:\d+\.)*\d+'
f=open("F:\\xxxxxx\\banners.txt","r")
data=f.read()
f.close
result=re.findall(pattern,data)
f1=open("F:\\xxxxxx\\test1.txt","w")
for i in result:
 f1.write(i+'\n')
f.close

(1)re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

(2)findall是把所有匹配到的结果都拿出来

(3)后面的group()括号里还能加数字,可以用来导出特定行

(4)\d是整数的意思 +是1-无穷(就是1个以上)

(5) *是0到无穷####(I.)*是0个以上的整数加点

(6)‘(?: )' 无捕获组

当你要将一部分规则作为一个整体对它进行某些操作,比如指定其重复次数时,你需要将这部分规则用'(?:'和 ‘)'把它包围起来,而不能仅仅只用一对括号,那样将得到绝对出人意料的结果。

例:匹配字符串中重复的'ab'

>>> s='ababab abbabb aabaab'

>>> re.findall( r'\b(?:ab)+\b' , s )

结果:[‘ababab']

如果仅使用一对括号,看看会是什么结果:

>>> re.findall( r'b\(ab)+\b' , s )

结果:[‘ab']

这是因为如果只使用一对括号,那么这就成为了一个组(group)。组的使用比较复杂。

调试过程:

import re
#pattern = r'.*?(\d.*\d).*'
#pattern = r'\d\.\d\.\d'
#pattern = r'\d\.(?:\d\.)*\d'
#pattern = r'\d*\.(?:\d\.)*\d*'
#pattern = r'\d\.(\d\.)*\d'
pattern = r'\d+\.(?:\d+\.)*\d+'
f=open("F:\\shovat\\banners.txt","r")
data=f.read()
##data=f.readline()
f.close
#for line in data:
result=re.findall(pattern,data)
##print(result)
 # print(result)
 # print(result.group())
#t=(result.group())
 #t=(result.group(1))

f1=open("F:\\shovat\\test1.txt","w")
for i in result:
 f1.write(i+'\n')
f.close

banners.txt

ddd 1.1.1cisco ios software,c3750 software (c3750-ipbase-m),version
ddd 2.2.2 12.2(53)se,release softeware(fc2) 10.1.1 
ddd 3.3.3 technical support:http://www.cisco.com/techsupport
ddd 4.4.4 copyright (c) 1986-2009 by cisco systems,inc.
ddd 5.5.5 comiled sun 13-dec-09 16:25 by prod_rel_team
9.5

识别结果:

test1.txt

1.1.1
2.2.2
12.2
10.1.1
3.3.3
4.4.4
5.5.5
9.5

总结

到此这篇关于如何利用python正则表达式匹配版本信息的文章就介绍到这了,更多相关python正则匹配版本信息内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
Nov 09 Python
Python算法应用实战之队列详解
Feb 04 Python
使用Python的package机制如何简化utils包设计详解
Dec 11 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
Python+OpenCV感兴趣区域ROI提取方法
Jan 10 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
Jun 18 Python
python实现图片压缩代码实例
Aug 12 Python
解决keras backend 越跑越慢问题
Jun 18 Python
Python一行代码实现自动发邮件功能
May 30 Python
基于python定位棋子位置及识别棋子颜色
Jul 26 Python
Python干货实战之八音符酱小游戏全过程详解
Oct 24 Python
python基于win32api实现键盘输入
Dec 09 #Python
用python实现一个简单的验证码
Dec 09 #Python
使用Python提取文本中含有特定字符串的方法示例
Dec 09 #Python
python使用正则表达式匹配txt特定字符串(有换行)
Dec 09 #Python
PyTorch中clone()、detach()及相关扩展详解
Dec 09 #Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 #Python
python excel多行合并的方法
Dec 09 #Python
You might like
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
php格式化时间戳
2016/12/17 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
Avengerls vs Newbee BO3 第二场2.18
2021/03/10 DOTA
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
vue router-link传参以及参数的使用实例
2017/11/10 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
python实现文件快照加密保护的方法
2015/06/30 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
python实现祝福弹窗效果
2019/04/07 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
python上selenium的弹框操作实现
2020/07/13 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
自主招生自荐信
2013/12/08 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
股东协议书
2014/04/14 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
小学班主任事迹材料
2014/12/17 职场文书
趣味运动会广播稿
2015/08/19 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书
微信小程序中使用vant框架的具体步骤
2022/02/18 Javascript
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android