Matchобъекты всегда истинны и Noneвозвращаются, если совпадений нет. Просто проверьте на истинность.
Код:
>>> st = 'bar'
>>> m = re.match(r"ba[r|z|d]",st)
>>> if m:
... m.group(0)
...
'bar'
Выход = bar
Если вам нужна searchфункциональность
>>> st = "bar"
>>> m = re.search(r"ba[r|z|d]",st)
>>> if m is not None:
... m.group(0)
...
'bar'
а если regexpне найден, то
>>> st = "hello"
>>> m = re.search(r"ba[r|z|d]",st)
>>> if m:
... m.group(0)
... else:
... print "no match"
...
no match
Как упоминал @bukzor, если st = foo barthan match не будет работать. Так что его более целесообразно использовать re.search.
bool(re.search('ba[rzd]', 'sometext')).