【发布时间】:2015-03-23 15:01:20
【问题描述】:
我想根据用户定义的表达式计算时间偏移量(天数)。该表达式将支持以下关键字:
-
+-> 递增 -
--> 递减 -
D-> 一天 -
W-> 周 -
M-> 月 -
WD-> 工作日(商务日历中的非节假日)
例子:
+3D means adding 3 days to the offset
-3D means reduce 3 day from the offset
+34M+3D means adding 34 months and 3 days to the offset
+3D+1WD means adding 3 days and then add one extra working day.
问题是我不确定如何编写正则表达式来处理字符串。谁能给我举个例子?
这是我目前尝试的,注意第二个令牌不正确
Pattern p = Pattern.compile("[+-]+([0-9]+)[WD|D|W|M]");
Matcher m = p.matcher("+1D-2WD+3M");
while(m.find()){
System.out.println(m.group(0));
}
结果:
+1D
-2W
+3M
【问题讨论】:
-
您是否尝试将“java 正则表达式”放入 Google?这就是 upvote 和 downvote 工具提示中“研究工作”一词的含义。
-
请看我的更新
-
因为您没有使用正确的正则表达式: [WD|D|W|M] 是 WD|M 列表中的单个字符(区分大小写)。的| [] 内部不再是“或”,而是字符 |自己。
-
我在下面的回答中添加了工作代码示例
标签: java regex quartz-scheduler