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

  • 更新时间:2023-01-10 09:20:06
  • 编辑:申惠丽

问题描述:

用正则表达式提取文本中的版本号信息,比如说: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+ffmpeg对视频并发直播进行压力测试

    这篇文章主要为大家详细介绍了python+ffmpeg视频并发直播压力测试,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    发布时间:2021-05-25

  • python中urlparse模块用法实例介绍

    这篇文章主要给大家介绍了关于python中urlparse模块介绍与使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面随着小编来

    发布时间:2019-09-05

  • Python简单定义与使用二叉树示例

    给大家整理一篇关于Python的教程,这篇文章主要介绍了Python简单定义与使用二叉树,结合实例形式分析了Python定义二叉树及节点插入相关操作技巧,需要的朋友可以参考下

    发布时间:2022-07-25

  • 《Python编程:从入门到实践》第十三章:外星人

    13-1 星星 :找一幅星星图像,并在屏幕上显示一系列整齐排列的星星。 start.py import pygamefrom pygame.sprite import Spriteclass Start(Sprite):docstring for Startdef __init__(self, screen):super(Start, self).__init__()self.screen = screenself.image = pygame.image.load(images/start.bmp)se

    发布时间:2018-12-01

  • python中文乱码不着急,先看懂字节和字符

    给大家整理一篇关于python的教程,这篇文章主要介绍了python中文乱码不着急,先看懂字节和字符,具有一定借鉴价值,需要的朋友可以参考下。

    发布时间:2022-06-17

  • python中如何提取字符串的字符

    字符串截取,也叫字符串切片,使用方括号[ ]来截取字符串。正索引代表从前往后索引,默认从0开始;负索引代表从后往前索引,字符串截取遵循“左闭右开”原则,也叫“包左不包右”。

    发布时间:2020-03-06

  • python 删除非空文件夹的代码

    下面为大家分享一篇python 删除非空文件夹的实例,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧

    发布时间:2020-02-02

  • Python机器学习之Scikit-Learn教程

    这篇文章主要介绍了基于Python和Scikit-Learn的机器学习探索的相关内容,小编觉得还是挺不错的,这里分享给大家,供需要的朋友学习和参考。

    发布时间:2020-03-02

  • 如何理解Python匿名函数

    当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便

    发布时间:2020-02-09

  • Python如何查看list中是否含有某元素

    今天小编就为大家分享一篇Python 查看list中是否含有某元素的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2019-08-13

用户留言