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

Python 如何使用正则表达式从该字符串获取日期?,python,regex,Python,Regex,我有一个字符串如下所示: <some_text> February 19, 2009 through March 17, 2009 <some_text> 如有任何帮助,我们将不胜感激。如何: (\w+ \d\d?, \d{4})\b.+?\b(\w+ \d\d?, \d{4})\b 您需要使用re.search来执行此操作 因为这将是一个很长的regexp,我建议您编译它,只是为了清楚起见 基本regexp将如下所示: date_finder = re.compil

我有一个字符串如下所示:

<some_text> February 19, 2009 through March 17, 2009 <some_text>
如有任何帮助,我们将不胜感激。

如何:

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

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

因为这将是一个很长的regexp,我建议您编译它,只是为了清楚起见

基本regexp将如下所示:

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。根据您的输入数据,regexp可能需要进行一些调整,但您应该了解这一点


希望有帮助。

您似乎忘记了匹配空格。如果您当前正在使用
re.match
,则应该使用
re.search
。我正在使用re.search()。。。这些空格…不需要那么详细的
(?i)(?#开始日期)[a-z]+[\d,]+(?#通过)[a-z]+[[]u+(?#结束日期)[a-z]+[\d,]+
@sln,它也可以提取其他东西,比如地址之类。这是一个dilema,太放松了正则表达式,它比你需要的匹配得多,太精确了,它将错过异常的文本。@Drakkainen:它在哪种情况下不起作用?你能说得更清楚些吗?第一次约会在第一组,第二次在第二组。是的,如果我能学会正确地复制和粘贴。。。这工作做得很好。谢谢
out = date_finder.search(input_str)
out.group(1) # date string before through