用于从列表中过滤掉日期的正则表达式

regular expression to filter out dates from a list

我有一个如下所示的列表:

['','2022-03-31', 'euss', 'projects','2021-03-31']

我想编写一个正则表达式,以便从列表中删除所有其他项目,只保留具有日期格式的项目。例如,2022-03-31 和 2021-03-31。

我试过了,但当我打印我的列表时,它似乎没有什么不同:

my_list = [re.sub(r"(\d+)/(\d+)/(\d+)",r"--",i) for i in list(my_list) ]

您可以先检查是否有正则表达式匹配字符串:

result = []
rx = re.compile(r'(\d+)-(\d+)-(\d+)')
for i in my_list:
    if rx.search(i):                          # Check if the regex matches the string
        result.append(rx.sub(r"--", i)) # Add modified string to resulting list

参见Python demo。 输出:

['31-2022-03', '31-2021-03']

你可以这样写:

rx = re.compile(r'(\d+)-(\d+)-(\d+)')
my_list = [rx.sub(r"--", i) for i in my_list if rx.search(i)]