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

 更新时间:2020年12月09日 12:00:01   作者:bangyumi  
这篇文章主要给大家介绍了关于如何利用python正则表达式匹配版本信息的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

问题描述:

用正则表达式提取文本中的版本号信息,比如说: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正则匹配版本信息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pygame实现弹球游戏流程

    pygame实现弹球游戏流程

    这篇文章主要介绍了pygame实现弹球游戏流程,弹球游戏(Pinball Pro)是安卓手机上排名第一的弹球游戏,真实再现了一直以来最经典的弹珠台游戏的玩法
    2023-01-01
  • Python创建增量目录的代码实例

    Python创建增量目录的代码实例

    这篇文章主要给大家介绍了关于Python创建增量目录的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友可以参考下
    2022-11-11
  • 教你用 Python 实现微信跳一跳(Mac+iOS版)

    教你用 Python 实现微信跳一跳(Mac+iOS版)

    这几天看网上好多微信跳一跳破解了,不过都是安卓的,无奈苹果不是开源也没办法。本文给大家分享用 Python 来玩微信跳一跳(Mac+iOS版),具体实现代码大家参考下本文
    2018-01-01
  • Python socket如何实现服务端和客户端数据传输(TCP)

    Python socket如何实现服务端和客户端数据传输(TCP)

    这篇文章主要介绍了Python socket如何实现服务端和客户端数据传输(TCP),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 动感网页相册 python编写简单文件夹内图片浏览工具

    动感网页相册 python编写简单文件夹内图片浏览工具

    这篇文章主要为大家详细介绍了动感网页相册的制作方法,即利用python编写简单文件夹内图片浏览工具,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • python 实现读取一个excel多个sheet表并合并的方法

    python 实现读取一个excel多个sheet表并合并的方法

    今天小编就为大家分享一篇python 实现读取一个excel多个sheet表并合并的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 高考考python编程是真的吗

    高考考python编程是真的吗

    在本篇文章里小编给大家整理的是一篇关于高考考python编程的相关信息,有兴趣的朋友们阅读下。
    2020-07-07
  • python相对包导入报“Attempted relative import in non-package”错误问题解决

    python相对包导入报“Attempted relative import in non-package”错误

    这篇文章主要介绍了python相对包导入报“Attempted relative import in non-package”错误,本文要在原理上解决 python当中相对包导入出现的问题,需要的朋友可以参考下
    2023-02-02
  • Python使用Chartify库进行数据分析绘制详解

    Python使用Chartify库进行数据分析绘制详解

    这篇文章主要介绍了Python使用Chartify库进行数据分析绘制,它提供了简洁易用的API,让我们能够快速地绘制出美观且专业的图表,无需像使用matplotlib和seaborn那样花费大量时间去调整各种复杂的参数,大大提高了数据可视化的效率,需要的朋友可以参考下
    2025-04-04
  • Python基于欧拉角绘制一个立方体

    Python基于欧拉角绘制一个立方体

    这篇文章主要为大家详细介绍了Python如何基于欧拉角实现绘制一个立方体,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-02-02

最新评论