def search(self, data: str, *a: Any, **kw: Any) -> Either[str, 'Match']:
return (
Maybe(self.rex.search(data, *a, **kw))
.to_either('`{}` does not contain `{}`'.format(data, self.spec)) /
L(Match)(self, _, data)
)