Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日期类型的正则表达式是什么_Java_Regex_String - Fatal编程技术网

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

Java 日期类型的正则表达式是什么,java,regex,string,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(my

我有一个字符串,我想找出所有的日期值,并将它们与特定的字符串关联

我的代码如下所示:

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(“”)中传递什么字符串regex

我的输出应该如下所示:

{[... "date":"2016-03-16"]},{[ ... "date":"2016-03-16" ...]}
代码的其余部分取决于json结构。看看:


我不确定输入的
T
Z
。如果它们总是相同的,那么下面的正则表达式将起作用。如果
T
Z
不是常数,则通过正则表达式中的
[A-Z]
更改
T
Z

我又做了一个改变,换了一个

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

它正在获得所需的输出

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

如果您想要一个基于
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));
}

它类似于json数据。因此,您应该使用json解析器,而不是正则表达式
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);
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));
}