示例字符串:
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()) ...
)
请记住,日期格式取决于应用程序的语言环境。期望某种格式会使您的应用程序脆弱。