为了账号安全,请及时绑定邮箱和手机立即绑定

Python REGEX正在使用额外的字符

Python REGEX正在使用额外的字符

红颜莎娜 2021-05-14 19:14:28
我有一个很长的脚本,可以通过正则表达式匹配设备名称。但是,设备名称看起来很相似,有时其他类型的计算机只是一个字母。例如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):


查看完整回答
反对 回复 2021-05-18
  • 2 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信