2016-04-06 29 views
0

için normal ifade nedir? Tek bir dize var Tüm tarih değerlerini öğrenmek ve belirli bir dizeyle bunları değiştirmek istiyorum.Tarih türü

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

ben Pattern.compile(""); ne dize regex geçmelidir: gibi

Kodum görünüyor?

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

için çalışıyor gibi görünüyor. Yani bir json Parser regex kullanmamalısınız – Jens

cevap

0
import org.json.*; 


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

kodun kalan sizin json-yapısına bağlıdır: gibi

My çıktı bakmak gerekir. Ben girişten T ve Z hakkında emin değilim

How to parse JSON in Java

veya

Java Api Link JsonObject

0

: göz at. Her zaman aynıysa, o zaman regex altında çalışır. T ve Z sabit değilse, T ve Z öğelerini regex'te [A-Z] olarak değiştirin. i did

bir daha değişiklik, bu gerekli çıktı alma

mydata = matcher.replaceAll(""); 

tarafından

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

yerini aldı. Bir regex tabanlı bir çözüm istiyorsanız

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

Bu örnekte Bu json verileri gibi lloks

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

İlgili konular