【发布时间】:2015-01-04 19:41:17
【问题描述】:
我需要按顺序进行 re.match,在匹配的情况下,我需要匹配结果来选择组。现在我可以做下一步了:
r = re.match('cond1', l)
if r:
# work with r.group()
else:
r = re.match('cond2', l)
if r:
# work with r.group()
else:
r = re.match('cond3', l)
if r:
# work with r.group()
等等。但我怎样才能做得更好?我发现如果像这样就无法执行分配:
if r = re.match('cond1', l):
# work with r.group()
elif r = re.match('cond2', l):
# work with r.group()
elif r = re.match('cond3', l)
# work with r.group()
【问题讨论】:
-
不,这是不可能的。
-
是的,我意识到了,但是如何更好地处理这样的问题?
-
通常,当您尝试将 3 个或更多事物链接在一起时,最好询问如何将任意数量的事物链接在一起。这通常意味着循环(或隐式循环,例如,在对
map的调用中,或递归函数)。 -
另外,如果你真的匹配这三种模式,为什么不直接匹配
r = re.match('cond[123]', l)? -
当您在六个月内返回此代码修复错误时,您的级联 if 很好(功能性、可理解、正常且易于理解.. ;-)