Если указать максимально возможное значение c для вашего варианта использования:
import re
s = "2y20w2d2h2m2s"
re.findall('([0-9]{1,2}[ywdhms]{1})', s)
Вывод: ['2y', '20w', '2d', '2h', '2m', '2s']
Это дает именно то, что вы хотите, без посторонних букв или цифр с более чем две цифры.