如何利用python正則表達(dá)式匹配版本信息
問題描述:
用正則表達(dá)式提取文本中的版本號(hào)信息,比如說:10.1.1 9.5 10.10.11
并實(shí)現(xiàn)在文本中(.txt)讀入,寫出到文本(.txt)
首先構(gòu)造正則表達(dá)式:
pattern=Vpat=“I.(I.)*I”
構(gòu)造正則表達(dá)式: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只匹配字符串的開始,如果字符串開始不符合正則表達(dá)式,則匹配失敗,函數(shù)返回None;而re.search匹配整個(gè)字符串,直到找到一個(gè)匹配。
(2)findall是把所有匹配到的結(jié)果都拿出來
(3)后面的group()括號(hào)里還能加數(shù)字,可以用來導(dǎo)出特定行
(4)\d是整數(shù)的意思 +是1-無窮(就是1個(gè)以上)
(5) *是0到無窮####(I.)*是0個(gè)以上的整數(shù)加點(diǎn)
(6)‘(?: )' 無捕獲組
當(dāng)你要將一部分規(guī)則作為一個(gè)整體對(duì)它進(jìn)行某些操作,比如指定其重復(fù)次數(shù)時(shí),你需要將這部分規(guī)則用'(?:'和 ‘)'把它包圍起來,而不能僅僅只用一對(duì)括號(hào),那樣將得到絕對(duì)出人意料的結(jié)果。
例:匹配字符串中重復(fù)的'ab'
>>> s='ababab abbabb aabaab' >>> re.findall( r'\b(?:ab)+\b' , s )
結(jié)果:[‘a(chǎn)babab']
如果僅使用一對(duì)括號(hào),看看會(huì)是什么結(jié)果:
>>> re.findall( r'b\(ab)+\b' , s )
結(jié)果:[‘a(chǎn)b']
這是因?yàn)槿绻皇褂靡粚?duì)括號(hào),那么這就成為了一個(gè)組(group)。組的使用比較復(fù)雜。
調(diào)試過程:
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
識(shí)別結(jié)果:
test1.txt
1.1.1
2.2.2
12.2
10.1.1
3.3.3
4.4.4
5.5.5
9.5
總結(jié)
到此這篇關(guān)于如何利用python正則表達(dá)式匹配版本信息的文章就介紹到這了,更多相關(guān)python正則匹配版本信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python創(chuàng)建增量目錄的代碼實(shí)例
這篇文章主要給大家介紹了關(guān)于Python創(chuàng)建增量目錄的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-11-11
教你用 Python 實(shí)現(xiàn)微信跳一跳(Mac+iOS版)
這幾天看網(wǎng)上好多微信跳一跳破解了,不過都是安卓的,無奈蘋果不是開源也沒辦法。本文給大家分享用 Python 來玩微信跳一跳(Mac+iOS版),具體實(shí)現(xiàn)代碼大家參考下本文2018-01-01
Python socket如何實(shí)現(xiàn)服務(wù)端和客戶端數(shù)據(jù)傳輸(TCP)
這篇文章主要介紹了Python socket如何實(shí)現(xiàn)服務(wù)端和客戶端數(shù)據(jù)傳輸(TCP),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
動(dòng)感網(wǎng)頁相冊(cè) python編寫簡單文件夾內(nèi)圖片瀏覽工具
這篇文章主要為大家詳細(xì)介紹了動(dòng)感網(wǎng)頁相冊(cè)的制作方法,即利用python編寫簡單文件夾內(nèi)圖片瀏覽工具,感興趣的小伙伴們可以參考一下2016-08-08
python 實(shí)現(xiàn)讀取一個(gè)excel多個(gè)sheet表并合并的方法
今天小編就為大家分享一篇python 實(shí)現(xiàn)讀取一個(gè)excel多個(gè)sheet表并合并的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02
python相對(duì)包導(dǎo)入報(bào)“Attempted?relative?import?in?non-package”錯(cuò)誤
這篇文章主要介紹了python相對(duì)包導(dǎo)入報(bào)“Attempted?relative?import?in?non-package”錯(cuò)誤,本文要在原理上解決?python當(dāng)中相對(duì)包導(dǎo)入出現(xiàn)的問題,需要的朋友可以參考下2023-02-02
Python使用Chartify庫進(jìn)行數(shù)據(jù)分析繪制詳解
這篇文章主要介紹了Python使用Chartify庫進(jìn)行數(shù)據(jù)分析繪制,它提供了簡潔易用的API,讓我們能夠快速地繪制出美觀且專業(yè)的圖表,無需像使用matplotlib和seaborn那樣花費(fèi)大量時(shí)間去調(diào)整各種復(fù)雜的參數(shù),大大提高了數(shù)據(jù)可視化的效率,需要的朋友可以參考下2025-04-04

