我有一些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
请您建议正确的方法。我的正则表达式技能仍在发展。
答案 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]"