I think return True/False is more clear and convinient than a Object. :)
If return None, it is not readable, user call a status and get a None. Hmmm, dose it mean get status failed?
Maybe user will be confused.
If return a Matchobject, I believe user need another parsing for the object.

So, I prefer to return True/False, and True means active, False means inactive, and failed to raise an error.

Does it make sense?

In addition, I think 
return bool(re.search(r"running", output)
is much shorter and better.

Thanx :)