正则表达式无效

问题描述:

这是我想从中删除日期值的json。正则表达式无效

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

而这一次是coresponding正则表达式

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, ""); 

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

+3

不是你重新定义'字符串消息= message.replaceAll(valueRegex, “”);'?不应该编译器哭泣? – Mritunjay

+0

@Mritunjay多数民众赞成在他可能意味着什么'代码什么都不做'大声笑 – XtremeBaumer

您需要删除^(开始)和$(完)从你的正则表达式元字符:

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 
} 
+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}