import re
s = '01.20/15 01/20.1915 1/1/19 01.11.11 1.8-24 3-4.12 01/20-09 12/12/1981 12-01/2001 1*51*12 22|1|13 03-02-1919 1-22-12 or 01-23-18 or 03-23-1984 01.11.18 or 2.2.17 or 02.02.18 or 12.1.16 12.23.1943 01-23-11 not 12.23.192 not 02.02.1'
У меня есть следующая строка s
, которая является модификацией , что делает регулярное выражение более конкретным для исключения определенных символов
Я хочу получить все даты, поэтому я использую
reg = r'\b((?:\d{1,2}(?:\.|\/|-)){2}(?:\d{4}|\d{2}))\b'
r1 = re.findall(reg,s)
r1
и я получаю
['01.20/15',
'01/20.1915',
'1/1/19',
'01.11.11',
'1.8-24',
'3-4.12',
'01/20-09',
'12/12/1981',
'12-01/2001',
'03-02-1919',
'1-22-12',
'01-23-18',
'03-23-1984',
'01.11.18',
'2.2.17',
'02.02.18',
'12.1.16',
'12.23.1943',
'01-23-11']
Это близко к тому, что я хочу, но я не хочу строки, которые имеют сочетание .
или /
или -
например '01.20/15'
или '3-4.12'
или 3-4.12
и т. Д.
Мой желаемый вывод - это
['1/1/19',
'01.11.11',
'12/12/1981',
'03-02-1919',
'1-22-12',
'01-23-18',
'03-23-1984',
'01.11.18',
'2.2.17',
'02.02.18',
'12.1.16',
'12.23.1943',
'01-23-11']
, который не содержит чисел, которые имеют сочетание .
или /
или-
например '01.20/15'
или '3-4.12'
Я также пытался изменить reg
reg = r'\b((?:\d{1,2}(?:\.\b|\\b/|-\b)){2}(?:\d{4}|\d{2}))\b'
, но это не совсем работает
Как мне изменить дальшеreg
чтобы получить желаемый результат?