我有一个看起来像这样的字符串:
<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}'
任何帮助都将不胜感激。
答案 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。根据您的输入数据,正则表达式可能需要稍微调整,但您应该明白这一点。
希望有所帮助。