【发布时间】:2019-02-25 17:47:04
【问题描述】:
我目前正在使用 Java,但在使用正则表达式匹配 JSON 字符串中的多种日期格式时遇到问题。
JSON:
{"x": "02/23/2019", "y": "02-27-2019"}
正则表达式:
[0-9]{1,2}(/|-)[0-9]{1,2}(/|-)[0-9]{4}
在正则表达式测试器中,此正则表达式匹配两个日期。但在 Java 代码中,我只能从组中得到一个日期。第二组只是一个“\”。
Java 代码:
private static void findDates() {
String regex = "[0-9]{1,2}(/|-)[0-9]{1,2}(/|-)[0-9]{4}";
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
String json =
"{\"x\":\"02/23/2019\",\n" +
"\"y\":\"02-27-2019\"}";
Matcher matcher = pattern.matcher(json);
if (matcher.find()) {
for (int i = 0; i < matcher.groupCount(); i++) {
String dateMatch = matcher.group(i);
System.out.println(dateMatch);
}
System.out.println(json);
}
}
我需要能够捕获与正则表达式指定的格式匹配的所有日期。因此,如果 JSON 中有 MM/dd/yyyy 或 MM-dd-yyyy 格式的三个日期,当我遍历组时,我应该得到所有三个日期,或者所有五个日期,或者所有两个日期,等等..
【问题讨论】:
-
为什么在
String regex = "[0-9]{1,2}(/|-)[0-9]{1,2}(/|-)[0-9]{4}\1+中有\1? -
我的错误,正在尝试测试中的某些内容而忘记删除。不错的收获。