如何使用正则表达式从此字符串中获取日期?

时间:2014-01-29 18:44:49

标签: python regex

我有一个看起来像这样的字符串:

<some_text> February 19, 2009 through March 17, 2009 <some_text>

如何使用正则表达式选择日期,使用python。

我试过这个,看看我是否至少可以匹配字符串,但它找不到任何东西:

r'\w*\d{1,2},\w+\d{4}\w+through\w+\d{1,2},\w+\d{4}'

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

怎么样:

(\w+ \d\d?, \d{4})\b.+?\b(\w+ \d\d?, \d{4})\b

答案 1 :(得分:1)

您需要使用re.search来执行此操作。

因为这是一个很长的正则表达式,我建议你编译它,只是为了清楚。

基本的正则表达式看起来像:

date_finder = re.compile("(\w+) through (\w+)")

这将找到由'through'分隔的两个字符串。

要访问它们,您将使用

out = data_finder.search(input_str)

out.group(1) # first paren match
out.group(2) # second paren match group

接下来,您必须检查您的群组是否实际上是日期字符串。

date_finder = re.compile("([JFMASOND][a-z]+\s+\d{1,2}[\s,]+\d{4}) through")

可从以下网址访问:

out = date_finder.search(input_str)
out.group(1) # date string before through

要获得第二个,只需在'through'的另一侧重复该regexp。根据您的输入数据,正则表达式可能需要稍微调整,但您应该明白这一点。

希望有所帮助。