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