正则表达式无效

时间:2017-09-14 06:14:48

标签: java regex

这是我的json,我想从中删除日期值。

      {
        "mCheckInTime": null,
        "mCheckOutTime": null,
        "mLateArrivalTime": "2017-09-14T18:00:00.000+05:00",
        "mNumberOfBeds": 0
      }

这一个是相应的正则表达式

    String valueRegex = "^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\+\\d{2}:\\d{2})$";
    String message = message.replaceAll(valueRegex, "");

当我运行此代码时,它什么都不做。 有人请帮我解决这个问题,这里有什么问题?

2 个答案:

答案 0 :(得分:1)

您需要从正则表达式中删除^(开始)和$(结束)元字符:

String message = "{\n" +
                "  \"mCheckInTime\": null,\n" +
                "  \"mCheckOutTime\": null,\n" +
                "  \"mLateArrivalTime\": \"2017-09-14T18:00:00.000+05:00\",\n" +
                "  \"mNumberOfBeds\": 0\n" +
                " }";

String regex = "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\+\\d{2}:\\d{2}";

System.out.println(message.replaceAll(regex, ""));

这会产生以下输出:

{
  "mCheckInTime": null,
  "mCheckOutTime": null,
  "mLateArrivalTime": "",
  "mNumberOfBeds": 0
 }

答案 1 :(得分:0)

这个解决方案怎么样?

    StringBuilder sb = new StringBuilder();
    sb.append("{");
    sb.append("\"mCheckInTime\":null,");
    sb.append("\"mCheckOutTime\":null,");
    sb.append("\"mLateArrivalTime\":\"2017-09-14T18:00:00.000+05:00\",");
    sb.append("\"mNumberOfBeds\":0");
    sb.append("}");
    String valueRegex = "(\"\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\+\\d{2}:\\d{2}\")";
    String message = sb.toString().replaceAll(valueRegex, "null");

结果将是:

{"mCheckInTime":null,"mCheckOutTime":null,"mLateArrivalTime":null,"mNumberOfBeds":0}