如何对不同的开放时间格式进行正则表达式?

问题描述 投票:-1回答:1

在我的数据库中,我有几种开放时间格式:

Mo, Di, Do, Fr 10:00-19:00, Mi 09:30-19:00, Sa 10:00-18:30
Mo-Fr 10:00-18:00, Sa 10:00-15:00, So 11:00-17:00
Mo - Fr 10:00 - 19:00, Sa 10:00 - 18:00
Mo-Mi 9:30-20:00, Do-Sa 9:30-22:00
Mo-Sa 09:00-20:00

我想做的就是对这种格式进行正则表达式,接下来我将可以将其存储在列表或地图中。主要原因是要将此对象转移到新表中,该表已通过示例条目进行了定义:

+----+--------+-------------+-------+-------+---------+---------+
| ID | ENTITY | DAY_OF_WEEK | OPEN  | CLOSE | CREATED | UPDATED |
+----+--------+-------------+-------+-------+---------+---------+
|  1 | 1 <FK> |           1 | 36000 | 72000 | <date>  | <date>  |
|  2 | 1 <FK> |           2 | 28800 | 43200 | <date>  | <date>  |
|  3 | 1 <FK> |           2 | 50400 | 72000 | <date>  | <date>  |
+----+--------+-------------+-------+-------+---------+---------+

我想从实际格式中获得的可能是地图Map<String, List<String>>,其中键将是开放时间,值将是字符串天数列表。

java regex datetime datetime-format
1个回答
0
投票

首先您可以使用以下命令删除所有空格

s.replaceAll(" ", "");

然后您可以用数字开头的逗号分割字符串:

s.split("(?<=\\d),");

然后,对于在上一步中获得的数组的每个元素,您可以使用此正则表达式将信息分为几天的部分和小时的部分:

(.*?)(\d{1,2}:\d{2})-(\d{1,2}:\d{2})

第1组将包含天数,第2组-营业时间,第3组-营业时间。然后,您可以尝试用几天来分析零件:

  • 如果包含逗号,然后按逗号分隔,您将获得日期列表

  • 如果它包含-,然后除以-,您将获得一周的开始和结束日期

© www.soinside.com 2019 - 2024. All rights reserved.