簡體   English   中英

使用正則表達式 python 從 output 中提取版本號?

[英]Extract the Version number from the output using regex python?

我想要 output 和 output 的版本號,我只想要一個代碼

版本:閱讀 output 從 Cisco 開始直到版本然后提取版本號

例如:讀這樣一行 Cisco IOS Software, s2t54 Software (s2t54-ADVIPSERVICESK9-M), Version 15.5(1)SY2, 輸出版本

Output:15.5(1)SY2

Output 1: ''' Cisco IOS Software, s2t54 Software (s2t54-ADVIPSERVICESK9-M), Version 15.5(1)SY2, RELEASE SOFTWARE (fc6) ROM: System Bootstrap, Version 12.2(50r)SYS3, RELEASE SOFTWARE (fc1) CPU :MPC8572_E,版本:2.2,(0x80E80022)核心:E500,版本:3.0,(0x80210030)'''

Output 2: Cisco IOS Software, IOS-XE Software, Catalyst 4500 L3 Switch Software (cat4500es8-UNIVERSALK9-M), Version 03.08.07.E RELEASE SOFTWARE (fc2) licensed under the GNU General Public License ("GPL") Version 2.0 . 在 GPL 2.0 版下許可的軟件代碼是根據 GPL 2.0 版條款獲得 GPL 代碼的免費軟件。

我試過這個代碼:

r = re.findall(r'Version\s*(([\w]+))', str)
r[0]

它給出了 output:

15.5

03.08.07.E

預期 output:

15.5(1)SY2

03.08.07.E

我認為這是您正在尋找的表達方式:

Version\s*(.+?)[\s|,]

它匹配“版本”之后的任何內容,直到找到逗號或空格

嘗試Version\s+([^,\s]+).+

解釋:

Version - 從字面上匹配Version

\s+ - 匹配一個或多個空格

([^,\s]+) - 匹配除空格\s或逗號之外的一個或多個字符,並將其存儲在第一個捕獲組中

.+ - 匹配任意字符中的一個或多個(換行符除外),這是為了消耗output的rest,防止在一個output中匹配多個版本

演示

我認為最好的是;

a = r'版本\s*(.+?)[\s|,|[]'

例如 output:

6.4.2

03.06.06E

03.16.07b.S

12.0(18b)

12.2(33.3.8)SB13

12.2(33)SXI2a

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM