> I think I am +1 on
> adding re.findfirst() as proposed by the OP.
It is not clear what it should return. A Match object, a string, a
tuple, whatever? What should it return if no match found -- None, en
empty string, an empty tuple, error? I suppose that different users can
have different need. It is not practical to provide functions for all
combinations, it is easy to write a function for your needs using
re.search(). We can only add some receipts in the documentation.
The concrete user code can be a little bit simpler (one-liner) if we
provide an empty match object. For example:
(re.search(patter.string) or EmptyMatch).groups()