如何利用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 相关文章推荐
在Django框架中运行Python应用全攻略
Jul 17 Python
Python基于生成器迭代实现的八皇后问题示例
May 23 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 Python
python用列表生成式写嵌套循环的方法
Nov 08 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
Dec 05 Python
使用python爬取抖音视频列表信息
Jul 15 Python
利用python实现短信和电话提醒功能的例子
Aug 08 Python
利用python实现凯撒密码加解密功能
Mar 31 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 Python
基于tensorflow权重文件的解读
May 26 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 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下10件你也许并不了解的事情
2008/09/11 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
Vue $attrs & inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
Python适配器模式代码实现解析
2019/08/02 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
为什么python比较流行
2020/06/19 Python
基于python实现可视化生成二维码工具
2020/07/08 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
2021/03/03 Python
Currentbody美国/加拿大:美容仪专家
2020/03/09 全球购物
高中生的学习总结自我鉴定
2013/10/26 职场文书
导师评语大全
2014/04/26 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
小学生常见病防治方案
2014/06/06 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
申报优秀教师材料
2014/12/16 职场文书
大学学生个人总结
2015/02/15 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers