我在哪里在此python代码中添加re.search?

时间:2018-08-01 19:22:33

标签: python regex

我有一些python代码可以更改正在使用的NMS上传入SNMP陷阱的严重性。

传入的SNMP陷阱包含的对象是给定严重性级别的数字范围。如果传入的对象编号为奇数,1、2、3、4、5等,则下面的代码有效。但是,在尝试匹配正则表达式编号范围时,下面的代码不起作用。

## This gets the alarmTrapSeverity function and creates a variable called            Severity to hold the value
if getattr(evt, 'alarmTrapSeverity', None) is not None:
Severity = getattr(evt, 'alarmTrapSeverity')



 ## This part runs through the Severity to assign the correct value
 if str(Severity) == '0':
 evt.severity = 0
 elif str(Severity) == '([1-9]|1[0-9])':
 evt.severity = 1

请您建议正确的方法。我的正则表达式技能仍在发展。

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这一点,则可以在else-if语句中执行正则表达式搜索以确认匹配。我的方法如下:

## This gets the alarmTrapSeverity function and creates a variable called            
Severity to hold the value
if getattr(evt, 'alarmTrapSeverity', None) is not None:
Severity = getattr(evt, 'alarmTrapSeverity')


regex = re.compile(r'([1-9]|1[0-9])')

## This part runs through the Severity to assign the correct value
if str(Severity) == '0':
    evt.severity = 0
elif regex.search(str(Severity)) != None:
    evt.severity = 1

这将在str(Severity)变量中搜索匹配的子字符串,在这种情况下,该子字符串将是包含1-19之间数字的字符串。然后,只要找到匹配项,就将evt.severity = 1设置。

同样,回头看看您的问题,如果您在使用该正则表达式查找1-19之间的数字时遇到问题,那么另一个可行的示例是

"10|1?[1-9]"