正则表达式在下划线和句点后查找日期格式 输出:说明:

我有一些文件列表,其中一些正在备份,我需要忽略格式化的备份 .2018-12-22或_2019-12-18。 我相信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 

如果有备份文件,则应忽略这些文件。

jack2010allen 回答:正则表达式在下划线和句点后查找日期格式 输出:说明:

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})

(\.|_):找到一个.或一个_字符。 ({\是转义字符,它使您可以将.用作字符而不是其正则表达式的含义)。这是第1组。

(\d{4}-\d{2}-\d{2}):然后,找到4个数字,破折号,2个数字,破折号和2个数字。因为它也用括号括起来,所以这是第2组和您感兴趣的组,这就是为什么我们将group(2)添加到re.search

,

您可以执行以下操作:

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}")
本文链接:https://www.f2er.com/3150759.html

大家都在问