java - 正则表达式从Java中的字符串中提取word中指定的日期值

标签 java regex

我有包含以下示例值的日期列

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

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

谢谢!!

最佳答案

我想这取决于您对表达式的要求有多严格。这个将适用于您的所有示例:

/(一月|二月|三月|四月|五月|六月?|七月|八月|九月|十月|十一月|十二月)\s(\d\d?).+?(\d\d\d\d)/

但是没有执行 stndrdth 规则。

也没有强制执行分隔日期和年份的逗号。

还有一个缩短的 June 的特殊情况(对于您的示例 5,June 有一个可选的 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"]

关于java - 正则表达式从Java中的字符串中提取word中指定的日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7380275/

相关文章:

java - JPanel画线时如何添加背景网格?

java - Spring中Service层的作用是什么?在这种情况下我如何拆分我的逻辑?

javascript - 如何创建包含 <td> 元素值的数组?

正则表达式匹配对我来说很奇怪

javascript - 在javascript中获取域名的正则表达式?

java - onToped JFrame 打开 JDialog = 对话框未覆盖 JFrame

java - ArrayList<整数>。拳击表演?

java - Seaglass 的外观和感觉

ruby - 匹配 "AAAA:AAA"模式的正则表达式

javascript - 如何知道目标字符串前是否有非空白字符?