正则表达式模式匹配两种日期时间格式

2024-09-27 17:31:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在进行目录侦听,需要获取所有遵循以下模式的目录名:Feb14-201414022014-sometext。目录名不能包含点,所以我不想匹配14022014-sometext.more。正如您所见,我只想匹配遵循%b%d-%Y%d%m%Y-textofanylengthWithoutDots模式的目录。你知道吗

对于第一种情况,应该是[a-zA-Z]{3}\d{2}。我不知道如何解析其余的,因为我的正则表达式技能很差,对不起。所以我希望有人能告诉我正确的模式是什么样的。谢谢。你知道吗


Tags: 目录more技能模式情况za目录名sometext
2条回答

我假设每个目录列表都用新行分隔

([A-Z]\w{2}\d{1,2}\-\d{4}|\d{7,8}\-\w+)$

将匹配两种情况,并将匹配的文本,只有当它是不间断的(由点或其他任何事情为此事),直到它击中行尾。你知道吗

注意事项:

  • 如果要匹配除点以外的所有内容,可以将最后的\w+替换为[^.]+。你知道吗
  • 您需要使用多行修饰符/m,否则$将只匹配字符串的结尾。你知道吗
  • 我没有在regex的开头添加^,但是如果每行包含一个目录,您可以这样做
  • 当然,您可以扩展这个正则表达式以包含(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec),而不是[A-Z]\w{2}。我这样做并不是为了保持可读性。为了便于维护,我还建议您将其存储在python数组中,并将其动态插入regex中。你知道吗

看看它在行动:http://regex101.com/r/pS6iY9

那很容易。 我能做的最好的是:

((Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\d\d-\d\d\d\d)|(\d\d\d\d\d\d\d\d-\w+)

第一部分匹配第一类日期,第二部分匹配第二类日期。你知道吗

相关问题 更多 >

    热门问题