【问题标题】:Match date using python regular expression使用python正则表达式匹配日期
【发布时间】:2012-04-16 22:38:01
【问题描述】:

如何在一条语句中将以下日期与 python 正则表达式匹配,日期为:

  11/12/98
   0/0/0
  25/02/1977

以下不适用于 0/0/0

 p_date = re.compile(r'(\d{2,4}[/-]\d{2,4}[/-]\d{2,4})')

【问题讨论】:

标签: python


【解决方案1】:

您只需要修正您期望的数字数量。

p_date = re.compile(r'(\d{1,2}[/-]\d{1,2}[/-]\d{1,4})')

然后,如果您想分组获取单个数字,

p_date = re.compile(r'(\d{1,2})[/-](\d{1,2})[/-](\d{1,4})')

【讨论】:

  • 0/0/0 仍然不匹配 我可以这样做吗.. p_date = re.compile(r'(\d{1,2})[/-](\d{1, 2})[/-](\d{1,2,4})')
  • 我想这不会通过 0/0/0,它也需要为 1,4 年。
  • @Rajeev:是的。如果你不能让它匹配,你的代码在别处是错误的。
【解决方案2】:

检查此模式的正则表达式似乎不正确。

'(\d{2,4}[/-]\d{2,4}[/-]\d{2,4})'

因为月、日和年字段的条件为 2 到 4 个字符, 这显然与0/0/0

之类的内容不匹配

正确的正则表达式是:

'(\d{1,2}[/-]\d{1,2}[/-]\d{1,4})'  # for month,day,year  or day,month,year
                                   # whatever your formate is

【讨论】:

    【解决方案3】:

    \d{2,4} 表示至少为 2 位,最多为 4 位的数字。您可以尝试\d{1,2}\d{1,4} 来匹配所需的位数。

    【讨论】:

      猜你喜欢
      • 2012-04-16
      • 2011-06-10
      • 1970-01-01
      • 2011-08-24
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多