如何使用正则表达式从字符串中提取时间?

Shi*_*oft 1 java regex time

问题是时间以不同的形式显示,例如

19:03 
3:29 pm
3:29 PM
Run Code Online (Sandbox Code Playgroud)

怎么办呢?谢谢

Joh*_*erg 7

我建议使用像SimpleDateFormat这个问题的东西.

你可以做的是定义你的日期格式集,然后在循环中解析它们,直到一个格式成功(即不抛出异常).以下代码片段的内容:

for(SimpleDateFormat fmt : formats) {
    try { 
        return fmt.parse(date, startpos);
    } catch(Exception e) {}
}
Run Code Online (Sandbox Code Playgroud)

当然,这假设您创建了一个不同格式模式的列表.一般来说,joda-time也是java时间的一个很好的补充.