冗余If Statement和Regex

时间:2013-09-05 00:10:15

标签: python regex if-statement

以下代码显然是多余的,但根据我的经验,我经常使用这种模式。在python中有更好的方法吗?

if re.search("at (\d{1,2}):\d{2}", p):
    a=re.search("at (\d{1,2}):\d{2}",p).group(1)

2 个答案:

答案 0 :(得分:6)

是的,这是多余的;您应该将search()的结果分配给变量,而不是将其调用两次:

m = re.search("at (\d{1,2}):\d{2}", p)

if m:
    a = m.group(1)

或者

a = m.group(1) if m else some_default_value

此外,如果您要经常使用此模式,请考虑使用re.compile()预编译正则表达式。

答案 1 :(得分:1)

保存第一个搜索并检查其布尔含义:

res = re.search (...)
if res:
   a = res.group (1)