什么是日期类型的正则表达式

时间:2016-04-06 06:17:02

标签: java regex string

我有一个字符串,我想找出所有日期值,并用特定字符串重新发送它们。

我的代码如下:

String mydata = "{[... \"date\":\"2016-03-16T12:38:28.390Z\"]},{[ ... \"date\":\"2016-03-16T12:38:28.390Z\" ...]}";
        Pattern pattern = Pattern.compile("");
        Matcher matcher = pattern.matcher(mydata);
        while(matcher.find()){
            mydata = mydata.replace(matcher.group(), matcher.group().substring(0, 10));
        }
        System.out.println(mydata);

我应该在Pattern.compile("");传递什么字符串正则表达式?

我的输出应该如下:

{[... "date":"2016-03-16"]},{[ ... "date":"2016-03-16" ...]}

3 个答案:

答案 0 :(得分:0)

import org.json.*;


JSONObject obj = new JSONObject("{[... "date":"2016-03-16"]},{[ ... "date":"2016-03-16" ...]}");

其余代码取决于你的json结构。看看:

How to parse JSON in Java

Java Api Link JsonObject

答案 1 :(得分:0)

我不确定输入中的TZ。如果它们始终相同,那么正则下面的正则表达式将起作用。如果TZ不一致,请在正则表达式中按T更改Z[A-Z]

我再做了一次改变,取而代之的是

mydata = mydata.replace(matcher.group(), matcher.group().substring(0, 10));

通过

mydata = matcher.replaceAll("");

获得所需的输出。

String mydata = "{[\"date\":\"2016-03-16T12:38:28.390Z\"]},{[\"date\":\"2016-03-16T12:38:28.390Z\"]}";

Pattern pattern = Pattern.compile("T\\d{2}\\:\\d{2}\\:\\d{2}\\.\\d{3}Z");

Matcher matcher = pattern.matcher(mydata);
while(matcher.find()){
   mydata = matcher.replaceAll("");
}
System.out.println(mydata);

答案 2 :(得分:0)

如果您想要基于regex的解决方案,这似乎适用于您的示例

Pattern pattern = Pattern.compile("(\\{\\[.*?\"date\":\"\\d{4}\\-\\d{2}\\-\\d{2}).*?(\"\\]\\})");
Matcher matcher = pattern.matcher(mydata);

while(matcher.find()) {
    System.out.println(matcher.group(1) + matcher.group(2));
}

<强> IDEONE DEMO