我有一个不同格式的字符串列表。其中一些字符串以连字符分隔日期时间开始,后面跟着一个由16个字母组成的字符串。我想只过滤符合这种格式的字符串。我在下面提供了输入和输出的例子。我不是正则表达式Maven,有人能建议一个在python上做这件事的巧妙方法吗?
输入:
example_list=['2022-05-05-16-59-25-5840ZQ37F231D95W',
'wereD/22fdas/',
'mnkljlj/124kljf/oaahreljah',
'2022-09-11-16-59-25-5840XY37F231D95Z']
输出:
['2022-05-05-16-59-25-5840ZQ37F231D95W',
'2022-09-11-16-59-25-5840XY37F231D95Z']
更新:
使用下面的建议与重新匹配和列表理解工作得很好,谢谢!
import re
[x for x in example_list if re.match("^\d{4}(-\d\d){5}-[A-Z\d]{16}$",x)]
1条答案
按热度按时间ar7v8xwq1#
试试这个:
参见live demo。
正则表达式分解:
^
输入开始\d{4}
4位数字(-\d\d){5}
5个破折号,然后2位数字[A-Z\d]{16}
16个大写字母或数字$
输入结束