用python正規表示式匹配版本資訊

2021-10-05 02:40:24 字數 2482 閱讀 8167

用正規表示式提取文字中的版本號資訊,比如說: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:\\******\\banners.txt"

,"r"

)data=f.read(

)f.close

result=re.findall(pattern,data)

f1=open

("f:\\******\\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)。組的使用比較複雜。

除錯過程:

9.5識別結果:

test1.txt

1.1

.12.2

.212.2

10.1

.13.3

.34.4

.45.5

.59.5

Python 正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 coding utf 8 ...

正規表示式匹配 python

coding utf 8 題目 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元 不包括空字元!而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ...

正規表示式 匹配

字串 void abtr quint32 ab 表示乙個正規表示式 template class bidirectionaliterator class allocator std allocator sub match bidirectionaliterator class match resul...