regex 基于连字符分隔值的字符串模式的过滤器列表

klr1opcd  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(133)

我有一个不同格式的字符串列表。其中一些字符串以连字符分隔日期时间开始,后面跟着一个由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)]
ar7v8xwq

ar7v8xwq1#

试试这个:

^\d{4}(-\d\d){5}-[A-Z\d]{16}$

参见live demo
正则表达式分解:

  • ^输入开始
  • \d{4} 4位数字
  • (-\d\d){5} 5个破折号,然后2位数字
  • [A-Z\d]{16} 16个大写字母或数字
  • $输入结束

相关问题