【问题标题】:Simple python regex groups can't parse date简单的 python 正则表达式组无法解析日期
【发布时间】:2010-10-17 03:59:48
【问题描述】:

我正在尝试使用组来使用正则表达式解析日期,但 python 返回的是空列表。我没有做任何花哨的事情,只是 12/25/10 之类的东西。不过,我希望它拒绝 12/25-10。

date = re.compile("\d{1,2}([/.-])\d{1,2}\1\d{2}")

我尝试过在线正则表达式库,但他们的解决方案似乎也无法运行。有什么想法吗?

示例输入:“您好,今天是 10/18/10,时间是上午 10:50” 希望的输出:“10/18/10”

我正在运行 Python 2.5。

【问题讨论】:

  • 您是要在较长的字符串中查找日期,还是要确认给定的字符串是日期?
  • 我正在尝试在较长的字符串中查找 1+ 个日期,该字符串将填充其他内容。

标签: python regex python-2.x regex-group


【解决方案1】:

使用原始字符串:

date = re.compile(r"\d{1,2}([/.-])\d{1,2}\1\d{2}")

否则,字符串文字中的\1 被解释为字符 1(标题开头)。

编辑:要为日期组件添加组,请使用:

re.compile(r"(\d{1,2})([/.-])(\d{1,2})\2(\d{2})")

【讨论】:

  • 当我尝试这个时,它返回的只是 ['/']
  • @ehfeng,那是因为你没有数字组。
  • 我不明白 - 我也应该在所有数字周围加上括号吗?如果可能,我希望正则表达式返回“12/25/10”。
  • @ehfeng:你用你编译的正则表达式做什么:搜索?匹配?找到所有?寻找者?还向我们展示一些示例输入。
【解决方案2】:

你应该使用 Python 的内置 strptime

【讨论】:

    【解决方案3】:

    无疑是矫枉过正,但“parsedatetime”库一直在为我工作:http://code.google.com/p/parsedatetime/

    它确实在内部使用了正则表达式,但不仅仅解析 MM/DD/YY 格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 2016-03-07
      相关资源
      最近更新 更多