Python REGEX正在使用额外的字符

我有一个很长的脚本,可以通过正则表达式匹配设备名称。但是,设备名称看起来很相似,有时其他类型的计算机只是一个字母。例如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”,这是错误的。


另外,我不愿意更改比赛顺序。那么,我该如何使正则表达式停止在完全匹配的位置?


红颜莎娜
浏览 127回答 2
2回答

守着星空守着你

就像Alex已经提到的那样,您需要添加$字符,但是您还需要添加+字符以告诉python它可以期望一个或多个数字。我会像这样更改正则表达式:if re.match(r'(yel)([1-9]+)$', serverName):我还将更改该elif子句,否则将不存在匹配项,正则表达式仅期望一个数字,而您的字符串则包含两个,这是我的建议:elif re.match(r'(yel)([1-9]+)([a-z])', serverName):
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python