繁体   English   中英

正则表达式,用于从Java字符串中提取单词中指定的日期值

[英]Regular expression to extract Date value specified in word from the string in Java

我有日期列,其中包含以下示例值

  • 发表于20106月25日,下午1:01
  • 2011年3月14日
  • 2011年4月15日,星期五,上午12:15
  • 2011年3月31日 ,星期四,1:11pm
  • 更新时间: 2011年6月3日,上午9:34。

我想提取给定字符串中的日期(以粗体显示),我可以得到一个正则表达式来检测单词中指定的日期。

谢谢!!

我想这取决于您需要表达的严格程度。 这将适用于您的所有示例:

/(January|February|March|April|May|June?|July|August|September|October|November|December)\\s(\\d\\d?).+?(\\d\\d\\d\\d)/

但是没有执行stndrdth规则。

逗号也没有强制执行,将日期与年份分开。

还有一个特殊情况,即六月的缩短(例如,示例5中有一个可选的6月的e ),但没有考虑其他缩短的月份的名称。

Firebug的示例输出:

>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s1)
["June 25, 2010", "June", "25", "2010"]
>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s2)
["March 14, 2011", "March", "14", "2011"]
>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s3)
["April 15, 2011", "April", "15", "2011"]
>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s4)
["March 31st, 2011", "March", "31", "2011"]
>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s5)
["Jun 3, 2011", "Jun", "3", "2011"]

不要重新发明,因为它是一个相当普遍的问题,所以有很多程序可以满足您的需求。 尝试阅读此http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/或仅浏览stackoverflow一点,您会发现很多!

/\w+\s\d+(st)?(nd)?(rd)?(th)?,\s+\d+/

更全面的正则表达式,可以接受与确切键入的月份不匹配但与“月份(可选)”,“年份”匹配的形式

请注意,您可能会看到以下内容:

Blah 45rd,2022222

而且它仍然会抓住它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM