在reif中保存re.match以便在elif之后使用

时间:2016-04-03 16:28:19

标签: python regex python-3.x

我想检查一个匹配各种模式之一的字符串。在elif中可以保存匹配结果吗? 举例说明:

if foo = re.match(r'add (.+)', message):
    print(foo.group(1))
elif foo = re.match(r'del (.+)', message):
    print(foo.group(1))
else:
    print("bar")

实际用例有点复杂,使用elif可以使其更清晰

2 个答案:

答案 0 :(得分:0)

像这样

add_check = re.match(r'add (.+)', message)
del_check = re.match(r'del (.+)', message)

if add_check:
    print(add_check.group(1))
elif del_check = :
    print(del_check.group(1))
else:
    print("bar")

或者像这样,只在第一次测试没有通过时进行第二次测试:

add_check = re.match(r'add (.+)', message)    
if add_check:
    print(add_check.group(1))
else:
    del_check = re.match(r'del (.+)', message)
    if del_check:
        print(del_check.group(1))
    else:
        print("bar")

答案 1 :(得分:0)

如果条件用于评估逻辑语句及其对应的真值,则分支逻辑不用于分配变量。您可以将foobar设置为相应的匹配项,然后测试if foo / elif bar ---> print(foo/bar.group(1))喜欢这样:

foo = re.match(r'add (.+)', message)
bar = re.match(r'del (.+)', message)
if foo:
   print(foo.group(1))
elif bar:
   print(bar.group(1))
else:
   print('fubar')