2010-10-17 46 views
1

我想解析日期与正则表达式,使用组,但python正在返回空列表。我没有做任何事情,只有12/25/10种东西。但我希望它能拒绝12/25-10。简单的Python正则表达式组不能解析日期

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

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

样品输入:“你好今天是10年10月18日,时间为上午10:50” 满怀希望的输出:“10年10月18日”

我跑的Python 2.5。

+1

你想查找更长的字符串中的日期,还是你想确认给定的字符串是日期? – 2010-10-17 07:59:30

+0

我正在尝试在一个较长的字符串中找到1个以上的日期,其中将填充其他内容。 – ehfeng 2010-10-18 15:49:11

回答

5

使用原始字符串:

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})") 
+0

当我尝试这个,它所返回的是['/'] – ehfeng 2010-10-17 04:18:00

+0

我试过这个在python 2.5,2.6和3.1 :( – ehfeng 2010-10-17 04:18:20

+0

@ehfeng,这是因为你没有数字组。 – 2010-10-17 04:19:23

2

毫无疑问矫枉过正,但“parsedatetime”图书馆已经为我工作:http://code.google.com/p/parsedatetime/

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