Регулярное выражение, чтобы найти формат даты после подчеркивания и точки - PullRequest
2 голосов
/ 06 ноября 2019

У меня есть список файлов с некоторыми резервными копиями, мне нужно игнорировать резервные копии в формате .2018-12-22 или _2019-12-18. Я считаю, что Regex был бы моим лучшим вариантом, но у меня мало опыта.

Я пытался использовать regex, но, похоже, не могу получить формат, чтобы принять точку или подчеркивание до даты после имени файла.

file_list=(glob.glob("/home/test/testdir"))
date1=
date2=
backups=[date1, date2]

for file in listoffiles:
    exists = os.path.isfile(file)
    if exists:
        for i in backups:
            ignore = i in file 

Файлы должны игнорироваться, если есть файлы резервных копий.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Вы можете сделать что-то вроде этого:

import re 

backups=["2018-12-22", "_2018-12-23", "2019/23/14", ".2019-23-14", "2019-12-23"]
ignore_regex = re.compile(r"[_|.]\d{4}-\d{2}-\d{2}")

for i in backups:
    ignore = True if ignore_regex.match(i) else False
    print(i, ignore)

Результаты:

2018-12-22 False
_2018-12-23 True
2019/23/14 False
.2019-23-14 True
2019-12-23 False

Редактировать 1

ignore_regex = re.compile(r"auto[_|.]\d{4}-\d{2}-\d{2}")
0 голосов
/ 06 ноября 2019

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...