如何利用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 开发Activex组件方法
Nov 08 Python
python使用递归解决全排列数字示例
Feb 11 Python
python 七种邮件内容发送方法实例
Apr 22 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
整理Python中的赋值运算符
May 13 Python
Python实现多线程HTTP下载器示例
Feb 11 Python
利用python获取Ping结果示例代码
Jul 06 Python
Python连接phoenix的方法示例
Sep 29 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
正确的理解和使用Django信号(Signals)
Apr 14 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 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
python实现bitmap数据结构详解
2014/02/17 Python
python对url格式解析的方法
2015/05/13 Python
python文件拆分与重组实例
2018/12/10 Python
Python 函数list&read&seek详解
2019/08/28 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
英文简历中的自我评价用语
2013/12/09 职场文书
信息技术教学反思
2014/02/12 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
团日活动总结怎么写
2014/06/25 职场文书
vue项目支付功能代码详解
2022/02/18 Vue.js