这种日期格式的正则表达式?

时间:2016-07-24 22:13:21

标签: python regex parsing

我试图找到一个与以下格式的日期匹配的正则表达式: 3-Jul-16 30-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

但是,当日期在字符串的开头时,它没有捕获它(因为它没有跟着任何字符)。

所以我的问题是,是否有正则表达式部分说"非数字字符或空字符串"

1 个答案:

答案 0 :(得分: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