2016-09-29 28 views
2

Ich versuche, wie diese aus einem String Schlüsselwertepaare zu erhaltenExtrahieren von Schlüsselwertpaar mit RegexMuster

TestKeyAAA: Hello World TestKeyBBB: 987654321 TestKeyCCC: A long sentence with a date time in it 2016-09-29T20:15:11 some more text TestKeyDDD: 123456789

Und wollen paires wie diese

TestKeyAAA = „Hello World“ TestKeyBBB = „987654321“ TestKeyCCC = „A long sentence with a date time in it 2016-09-29T20:15:11 some more text“ TestKeyDDD = „123456789“

Das Muster erhalten Ich benutze ist dies

(.+?):(.+?)(?=(?:[^\s]+:)|(?:$))

Es funktioniert gut, außer für den Wert des Schlüssels TestKeyCCC. Das Problem ist das ":" im Datum. nur

Die Schlüssel enthalten [A-Z],[a-z],. and /

Ich versuchte es mit dem folgenden Muster

([A-Za-z\.]+?):(.+?)(?=(?:[^\s]+:)|(?:$))

Aber das ist nicht funktionierte. Was mache ich falsch?

+0

Die Schlüssel keine Leerzeichen enthalten und Zahlen. Sie enthalten die Zeichen A-Z, a-z, ".", "/". Hier sind einige Beispiele "Location", "C/F", "Num." –

+0

können Sie in diese speziellen Anführungszeichen in den Zeichenbereich der Regex werfen, scheint zu arbeiten. –

Antwort

1

Ich glaube, Sie brauchen Ziffern sowie Leerzeichen auszuschließen, wenn zur Anpassung „:“

1

Dies scheint mit Ihrem Testszenario zu funktionieren.

(?<key>[A-Za-z\.,/]+?):\s(?<value>.+?)(?=\s[A-Za-z\.,/]+?:|$) 
+0

bearbeitet, um alle Ihre Schlüsselzeichen wie in der Frage angegeben zu berücksichtigen –