示例字符串:


  00000018.000f1b1f 0101559e Thu May 19 2016 00:24:14 -05:00 [k ....


...提到不需要的单词。

如果我们用空格分隔,则没有像Thu这样的规范总是第三个字符串。它可以在字符串中的任何位置。我想匹配Thu May 19 2016 00:24:14 -05:00并使用simpedateformat类进行解析。

我在想像.*?((sun|mon|tue|wed|thu|fri|sat)\s* (jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\s+\d{0,2}\s+\d{0,4}\s+\d{0,2}\:\d{0,2}\:\d{0,2}\s+([+|-]\d{0,2}:\d{0,2})?).*?这样的正则表达式

我不擅长正则表达式。请帮助我改进我的正则表达式,它可以由simpledateformat类轻松解析。 -05:00是可选的。

有什么建议么?

最佳答案

您的正则表达式看起来不错,但是您可以通过将搜索限制为单个空格和固定位数来提高性能

(?i)\b((sun|mon|tue|wed|thu|fri|sat) (jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) \d{1,2} \d{4} \d{2}\:\d{2}\:\d{2}( [+|-]\d{2}:\d{2})?)

然后您可以循环搜索(while (matcher.find()) ...

请记住,日期格式取决于应用程序的语言环境。期望某种格式会使您的应用程序脆弱。

09-28 00:06