2016-08-11 4 views
0

ich eine Liste der Schlüsselwerte als solche: -Java regex Extrakt Schlüssel-Wert ohne Anführungszeichen

{ 
    "xxx" : "1234", 
    "yyy" : "1234", 
    "zzz" : "1234" 
} 

ich einen RegexMuster habe: -

String pattern = ".*zzz\\s*:\\s*(.*)[\n\r]"; 

, die nur Werte im Fall extrahiert einer Übereinstimmung, wenn der Schlüssel "zzz" ist.

Allerdings bekomme ich kein Match aufgrund der Zitate ... Wie kann ich mein Muster wechseln, um das Spiel zu bekommen? Ich möchte auch keine Zitate in meinem Wert erhalten.

+0

Sieht aus wie Sie eine json Bibliothek statt regex hier .. – Zavior

+0

verwenden sollten no..because es gibt andere Dinge unten und json Parser wird nicht mit diesem – Philo

+0

funktionieren, wenn Es gibt noch andere Dinge, stellen Sie sicher, dass der von Ihnen verwendete Regex die Dinge nicht von dort aufnimmt. Ich empfehle auch sehr, wenn möglich einen Parser über Regex zu verwenden, aber natürlich weiß ich nicht Ihre volle Situation. – Aarjav

Antwort

1

Sie erhalten die Übereinstimmung aufgrund des fehlenden doppelten Zitats nach der zzz nicht.

String pattern = ".*zzz\"\\s*:\\s*(.*)[\n\r]"; 
         ^--- Here 

Btw, können Sie verwenden:

String pattern = ".*zzz\".*?\"(.*?)\""; 

Dann müssen Sie match(1) den Inhalt von der Erfassungsgruppe durch die Matcher greifen.

Regex demo

IDE One demo

+0

ja, aber ich will nur den Wert, nicht das Schlüssel-Wert-Paar – Philo

+0

überprüfen Sie dies https://regex101.com/r/gN4oJ8/2 – Philo

+0

@Philo, die Regex ist in Ordnung, Sie reden über Grabbing, was Sie gefangen in deine Fanggruppe. Sie müssen auf die Matcher-Methode zugreifen 'Gruppe (1)' –

Verwandte Themen