import re
s = '99year old 93yo 100 yo 97y.o. and his wife is 93 y.o. 20 y.o 90old 23 year old 29 years old but not 25-year-old and 91year old cousin is 99 now and 90-year-old or 102 year old'
reg = r'(?:9\d|1\d{2})(?:\s|-)?years?(?:\s|-)?old'
r1 = re.findall(reg,s)
r1
['99year old', '91year old', '90-year-old', '102 year old']
Следующий код работает хорошо и взят из извлечения возрастных вариаций с использованием регулярных выражений
Моя цель - извлечь элементы, перечисленные в r1
плюс любую цифру выше 90 , оканчивающихся на y.o.
или yo
. Мой желаемый результат -
['99year old', '93yo', '100 yo', '97y.o., '93 y.o.', '91year old', '90-year-old', '102 year old']
Я пытался изменить reg
следующим образом, но это не работает тихо
reg = r'(?:9\d|1\d{2})(?:\s|-)?years?(?:\s|-)?old(?:9\d|1\d{2})y.o.|(?:9\d|1\d{2})yo'
Как мне изменить reg
, чтобы получить желаемоевыход