我有一個(gè)很長(zhǎng)的腳本,可以通過正則表達(dá)式匹配設(shè)備名稱。但是,設(shè)備名稱看起來很相似,有時(shí)其他類型的計(jì)算機(jī)只是一個(gè)字母。例如yel15是HP機(jī)器,而yel15e是Cisco機(jī)器。但是,它與第一個(gè)匹配項(xiàng)匹配 if re.match(r'(yel)([1-9])', serverName): machine = re.match(r'(yel)([1-9])', serverName) print ('This is the HP Machine') elif re.match(r'(yel)([1-9])([a-z])', serverName): machine = re.match(r'(yel)([1-9])([a-z])', serverName) print ('This is the Cisco Machine'當(dāng)我將設(shè)備名稱設(shè)置為“ yel11x”時(shí),其輸出將為“ This is the HP Machine”,這是錯(cuò)誤的。另外,我不愿意更改比賽順序。那么,我該如何使正則表達(dá)式停止在完全匹配的位置?
2 回答

守著星空守著你
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
就像Alex已經(jīng)提到的那樣,您需要添加$
字符,但是您還需要添加+
字符以告訴python它可以期望一個(gè)或多個(gè)數(shù)字。
我會(huì)像這樣更改正則表達(dá)式:
if re.match(r'(yel)([1-9]+)$', serverName):
我還將更改該elif
子句,否則將不存在匹配項(xiàng),正則表達(dá)式僅期望一個(gè)數(shù)字,而您的字符串則包含兩個(gè),這是我的建議:
elif re.match(r'(yel)([1-9]+)([a-z])', serverName):
添加回答
舉報(bào)
0/150
提交
取消