2016-06-04 8 views
2

Ich versuche, die 1472665457134 von der Schnur/Datum (1472665457134)/Parse .NET json für Datum und Uhrzeit in Android

aber extrahieren, obwohl die Regex korrekt scheint es nicht funktioniert, warum?

String jsondate = "/Date(1472665457134)/"; 

Pattern pattern = Pattern.compile("/(\\d+)(?:-(\\d+))?/"); 
Matcher matcher = pattern.matcher(jsondate); 
if (matcher.find()) //false here!! 
{ 
    Log.d("test", matcher.group(1)); 
} 
+0

Sie sollten die Klammern entfernen - sie werden für die Gruppierung in regulären Ausdrücken verwendet. –

Antwort

0

Beschreibung

Weil Sie Beispiel-String ist so einfach, und Sie versuchen, nur das Datum zu erfassen dann nur die Zahlen greifen.

([0-9]+) 

Regular expression visualization

Dieser reguläre Ausdruck wird wie folgt vor: packt

  • die aus Ziffern bestehen String.

Beispiel

Live Demo

https://regex101.com/r/rV5jN6/1

Beispieltext

/Date(1472665457134)/ 

Probe Spiele

1472665457134 

Erklärung

NODE      EXPLANATION 
---------------------------------------------------------------------- 
    (      group and capture to \1: 
---------------------------------------------------------------------- 
    [0-9]+     any character of: '0' to '9' (1 or more 
          times (matching the most amount 
          possible)) 
---------------------------------------------------------------------- 
)      end of \1 
---------------------------------------------------------------------- 

Alternative

Allerdings, wenn Sie müssen auch überprüfen, ob Sie den Teil von Zahlen in Klammern sind immer direkt nach date, dann ist dieser regex tun wird.

date\(([0-9]+)\) 

Regular expression visualization

Hinweis, in Java Sie alle \ mit \\ ersetzen müssen.

0

diese regex Versuchen:

\((-?\d+)\) 

Als Java-String ist:

"\\((-?\\d+)\\)" 

Capturing Gruppe 1 eine positive oder negative Zahl enthalten, die in Klammern enthalten war.