Вы можете использовать
r'(\d+(?:-\d+)?\+?)\s*(years?)'
См. Демоверсию regex .Скомпилируйте с флагом re.I
, чтобы включить сопоставление без учета регистра.
Подробности
(\d+(?:-\d+)?\+?)
- группа 1: \d+
- 1+ цифр (?:-\d+)?
- необязательное совпадение группы -
, а затем 1+ цифр \+?
- необязательное +
char
\s*
- 0+ пробелов (years?)
- Группа 2: year
или years
Демонстрация Python :
import re
rx = re.compile(r"(\d+(?:-\d+)?\+?)\s*(years?)", re.I)
strs = ["10+ years", "10 years", "1 year", "10-15 years"]
for description in strs:
exp_temp = rx.search(description)
if exp_temp:
print(exp_temp.groups())
Выход:
('10+', 'years')
('10', 'years')
('1', 'year')
('10-15', 'years')