import re
from pprint import pprint
regex = r"\w +(?:-\w +)?\s *(?:\( \w +(?:-\w +)?\) \s +)?(?:year|month|days)s?\b "
s = "This product has a shell life of 21 days or 21 (twenty-one) days or twenty-one days or 21 months, 21 years or five days or 5 (five) days or five (5) days or five(5) days."
pprint ( re .findall ( regex, s) )
aW1wb3J0IHJlCmZyb20gcHByaW50IGltcG9ydCBwcHJpbnQKCnJlZ2V4ID0gciJcdysoPzotXHcrKT9ccyooPzpcKFx3Kyg/Oi1cdyspP1wpXHMrKT8oPzp5ZWFyfG1vbnRofGRheXMpcz9cYiIKCnMgPSAiVGhpcyBwcm9kdWN0IGhhcyBhIHNoZWxsIGxpZmUgb2YgMjEgZGF5cyBvciAyMSAodHdlbnR5LW9uZSkgZGF5cyBvciB0d2VudHktb25lIGRheXMgb3IgMjEgbW9udGhzLCAyMSB5ZWFycyBvciBmaXZlIGRheXMgb3IgNSAoZml2ZSkgZGF5cyBvciBmaXZlICg1KSBkYXlzIG9yIGZpdmUoNSkgZGF5cy4iCgpwcHJpbnQgKHJlLmZpbmRhbGwocmVnZXgsIHMpKQ==
stdout
['21 days',
'21 (twenty-one) days',
'twenty-one days',
'21 months',
'21 years',
'five days',
'5 (five) days',
'five (5) days',
'five(5) days']