【问题标题】:Regex for this date format?这种日期格式的正则表达式?
【发布时间】:2016-11-28 04:21:48
【问题描述】:

我正在尝试查找将匹配以下格式的日期的正则表达式:3-Jul-1630-Jun-16

我一开始尝试过这个正则表达式:

/[0-9]{1,}-[a-zA-Z]{3}-[0-9]{1,}/g

但它也匹配像 947-UfO-104 这样的日期,这不是我想要的。
首先,我得到了月份:

/[0-9]{1,}-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-[0-9]{1,}/g

现在,年份很好,因为它可以是任何数字。
在白天,我尝试过:

/([1-9]|1[0-9]|2[0-9]|30|31)-(Jan|Feb.../g

现在,我的问题是:73-Jul-2015
匹配:2015 年 7 月 3 日

我尝试确保日期后跟这样的非数字字符:

/[^0-9]{1,}([1-9]|1[0-9]|2[0-9]|30|31)-(Jan|Feb.../g

但是,当日期在字符串的开头时,它没有抓住它(因为它后面没有任何字符)。

所以我的问题是,是否有一个正则表达式部分显示“非数字字符或空字符串”

【问题讨论】:

  • “我对正则表达式有点陌生,但我想了解更多” - 太好了! “所以我需要一个正则表达式搜索” - 不。从例如开始docs.python.org/3/howto/regex.html

标签: python regex parsing


【解决方案1】:

将任务分成 3 个部分。首先是 1-31 范围内的数字 (tutorial),然后是月份的可能值列表,然后是两个数字。

\b([1-9]|[12][0-9]|3[01])-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2})\b

Regex101 Demo

【讨论】:

  • @Rommel 我希望你从这个例子中学到了更多关于正则表达式的知识。不学习如何自己做答案是不行的。
  • @4castle 在喂食35-Jul-12 时会捕获5-Jul-12,请注意!
  • @YotamSalmon 好电话。用断字断言修复了这个问题。
猜你喜欢
  • 2021-09-04
  • 2012-07-15
  • 2012-10-09
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多