re.search
это путь. Давайте попробуем с двумя примерами:
import re
string1 = 'abc.2018-12-22 ghi'
string2 = ' or _2019-12-18.2929'
re.search('(\.|_)(\d{4}-\d{2}-\d{2})', string1).group(2)
re.search('(\.|_)(\d{4}-\d{2}-\d{2})', string2).group(2)
Вывод:
'2018-12-22'
'2019-12-18'
Объяснение:
re.search
ищет группы совпадений, которые затем можно извлечь. Каждая группа заключена в скобки. Давайте разложим регулярное выражение (\.|_)(\d{4}-\d{2}-\d{2})
:
(\.|_)
: найдите символ .
или _
. (\
является escape-символом, он позволяет использовать .
в качестве символа вместо его значения в регулярном выражении). Это группа 1.
(\d{4}-\d{2}-\d{2})
: Затем найдите 4 числа, тире, 2 цифры, тире и 2 цифры. Поскольку он также заключен в скобки, это группа 2 и ваша группа интересов, и поэтому мы добавляем group(2)
к re.search
.