我有一个字符串,它看起来像这样:如何使用正则表达式从该字符串中获取日期?
<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}'
任何帮助,将不胜感激。
我有一个字符串,它看起来像这样:如何使用正则表达式从该字符串中获取日期?
<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}'
任何帮助,将不胜感激。
如何:
(\w+ \d\d?, \d{4})\b.+?\b(\w+ \d\d?, \d{4})\b
没有工作:(... – Drakkainen
@ Drakkainen:在哪些方面没有工作?你能更明确吗?第一次约会在第一组,第二次在第二组。 – Toto
是的,如果我可以学习复制和粘贴正确...这个工作完美。谢谢! – Drakkainen
您将需要使用re.search做到这一点。
因为这将是一个很长的正则表达式,为了清晰起见,我建议您编译它。
基本的正则表达式看起来像部份:
date_finder = re.compile("(\w+) through (\w+)")
这将找到“到”分隔的两个字符串。
要访问他们,你将使用
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
要获得第二只需要重复上“到”的另一面是正则表达式。正则表达式可能会根据您的输入数据进行一些调整,但您应该明白。
希望有所帮助。
你似乎忘记匹配空格。如果你正在使用're.match',你应该使用're.search'。 – Jerry
我正在使用re.search()...他们的空间.... –
Drakkainen
不需要那个详细的'(?i)(?#start_date)[az] + [\ d,] +(? #through)[az] + [] +(?#end_date)[az] + [\ d,] +' – sln