我需要从两个日期中提取日期信息:
Monday, Sep 1, 2014 10:00 AM
和
01/09/14
这样我有日(01),月(09)和年(2014)
我能够用这个正则表达式提取日期(01):
\s+.*?(\d+)\/*,*
我在提取年份方面没有运气,而且我对如何提取月份完全无能为力。 请帮助。
答案 0 :(得分:1)
这是一个组合的正则表达式。你可以从中获得两种形式。
如果它" 2014年9月1日星期一"格式化捕获组将是:
1: Sep
3: 1
4: 2014
和#34; 01/01/14"他们将:
2: 01
3: 01
4: 14
只检查第二组是否存在,以检查该值是否为第二种格式:
^\w*(?:, (\w{3})|(\d{2}))[\/ ]\s*(\d{1,2})(?:/|, )(\d{2,4})
说明:
答案 1 :(得分:1)
可以使用以下内容提取第一个日期:
\w+,\s\w+\s\d{1,2},\s\d{4}\s\d{2}:\d{2}\s(?:AM|PM)
这里的主要部分是数字仅限于数字。即。一年只能是4位数,月/日只能是2位数。如果需要,您可以更进一步,但这通常足以防止您正在解析的数据中出现任何误报。
可以像下面这样提取第二个日期:
\d{2}/\d{2}/\d{2}
同样,日期的各个部分限制为两位数,以尝试减少误报的数量。如果数据中存在其他日期格式,则会捕获误报。在这种情况下,需要更多限制。还有一些你可以做的事情,但这实际上取决于你的数据。
然后,如果您想要合并两个正则表达式,一种方法是执行以下操作:
(?:\w+,\s\w+\s\d{1,2},\s\d{4}\s\d{2}:\d{2}\s(?:AM|PM)|\d{2}\/\d{2}\/\d{2})
答案 2 :(得分:0)
您可以使用以下方式从第一个日期提取数据:
(.+),\s(\.+)\s(\d+),.*
从第一个日期开始使用:
(\d+)\/(\d+)\/(\d+)
如果您确定日期输出的格式。