在python正则表达式搜索中返回任何匹配的更好方法是什么?

时间:2013-02-22 17:52:59

标签: python regex search

我正在针对两个条件ProfileBuildDate运行简单的正则表达式搜索。 我想要涵盖这样的可能性:我要么找到两个,一个或没有结果,并尽可能多地返回信息。这是我写的方式,但我想知道是否有更多的Pythonic方式?

    p = re.search(r'Profile\t+(\w+)',s)
    d = re.search(r'BuildDate\t+([A-z0-9-]+)',s)

    # Return whatever you can find. 
    if p is None and d is None:
        return (None, None)
    elif p is None:
        return (None, d.group(1))
    elif d is None:
        return (p.group(1), None)
    else:
        return (p.group(1),d.group(1))

1 个答案:

答案 0 :(得分:3)

p = re.search(r'Profile\t+(\w+)',s)
d = re.search(r'BuildDate\t+([A-z0-9-]+)',s)

return (p.group(1) if p is not None else None,
        d.group(1) if d is not None else None)

也是这样:

return (p and p.group(1), d and d.group(1))

虽然不那么冗长,但有点模糊。