我有一个很长的脚本,可以通过正则表达式匹配设备名称。但是,设备名称看起来很相似,有时其他类型的计算机只是一个字母。例如yel15是HP机器,而yel15e是Cisco机器。但是,它与第一个匹配项匹配 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'当我将设备名称设置为“ yel11x”时,其输出将为“ This is the HP Machine”,这是错误的。另外,我不愿意更改比赛顺序。那么,我该如何使正则表达式停止在完全匹配的位置?
2 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
就像Alex已经提到的那样,您需要添加$
字符,但是您还需要添加+
字符以告诉python它可以期望一个或多个数字。
我会像这样更改正则表达式:
if re.match(r'(yel)([1-9]+)$', serverName):
我还将更改该elif
子句,否则将不存在匹配项,正则表达式仅期望一个数字,而您的字符串则包含两个,这是我的建议:
elif re.match(r'(yel)([1-9]+)([a-z])', serverName):
添加回答
举报
0/150
提交
取消