如何在java中使用正则表达式从字符串中获取日期?

如何在java中使用正则表达式从字符串中获取日期?,java,regex,Java,Regex,这是我的密码: String t1="postby <span title=\"2011-4-5 17:22\">yesterday&nbsp;17:22</span>"; String t2="postby 2010-11-12 10:02"; String t1=“昨天17:22发布”; String t2=“postby 2010-11-12 10:02”; 我想使用一个正则表达式从t1或t2获取2011-4-5 17:22,2010-11-12 10:

这是我的密码:

String t1="postby <span title=\"2011-4-5 17:22\">yesterday&nbsp;17:22</span>";
String t2="postby 2010-11-12 10:02";
String t1=“昨天17:22发布”;
String t2=“postby 2010-11-12 10:02”;
我想使用一个正则表达式从
t1
t2
获取
2011-4-5 17:22
2010-11-12 10:02

(输入
t1
t2
,输出日期)

怎么办?(请给我一些示例代码,谢谢)

请注意:

  • 您必须在字符串中转义斜杠:
    string pattern=“\\d{4}-\\d{1,2}…”
  • \d
    表示“数字”(0-9)
  • {x}
    表示“x次”
  • {x,y}
    表示“至少x次,但不超过y次”

参考资料:

您允许多少错误匹配?波佐模式

\d{4}-\d{1,2}-\d{1,2} \d{2}:\d{2}
但这与以下可疑情况相符:
0000-1-1 00:00
(没有零年)、
2011-0-1 00:00
(没有零月)、
2011-13-1 00:00
(没有13个月)、
2011-1-32 00:00
(没有32个月)
2011-12-31 24:00
(最多有一闰秒)和
2011-12-3123:61
(最多有一次飞跃)

您希望解析的日期时间几乎是,但不完全是。如果可以,请使用该国际标准格式

在我的一个程序(使用
grep
的shell脚本)中,我使用了以下正则表达式:

^20[0-9][0-9]-[01][0-9]-[0-3][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]UTC$
我有一个额外的
T
UTC
要处理,只对本世纪的日期感兴趣,并以秒精度解析。我知道我对小时和分钟值没有太多限制,可能是因为传统的C/C++转换可以处理它们

因此,我想您可以使用以下内容:

\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-6]\d

杰出的为了更安全,可以在开头和结尾添加\b。
\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-6]\d