Java - 高效的正则表达式来匹配日期和时间

标签 java regex

示例字符串:

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()) ...)

请记住,日期格式取决于应用程序区域设置。期望某种格式将使您的应用程序变得脆弱。

关于Java - 高效的正则表达式来匹配日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42268414/

相关文章:

java - 如何从liferay中的默认表单将数据保存到自定义表中?

java - 在 json 映射文件中放置 @JsonFormat 时处理异常。收到 400 异常

java - Dart VM服务客户端

java - LibGDX 让世界移动,但玩家不动

c# - 寻找简单而强大的 windows 通配符 (`*, ?` ) 匹配实现

python - 使用 REGEX 分割字符串

java - wait()方法对java同步块(synchronized block)中线程的影响

python - 我希望使用正则表达式来获取汉字句子的中间模式

javascript - 正则表达式 - 至少 1 个数字、1 个字母、1 个特殊字符和至少 3 个字符

javascript - 需要一个需要大写或小写字母的 JavaScript 正则表达式