2017-08-04 2 views
-2

Während meiner Suche, würde ich Beratung zu diesem regex mögen.Regex Transformation

Von diesem Testausdruck: "reporter": "JONES Jack"

Ich würde bekommen: "reporter":{"name":"jack.jones"}

ich mit dieser Regex versuchen: (\"reporter\":\")+(([a-zA-Z]+)[[:space:]]([a-zA-Z]+))

Könnten Sie mir vorschlagen, eine Sache bitte mit replaceAll von Java?

Hallo,

Schließlich fand ich die Antwort:

Die Regex den ersten Ausdruck zu beschreiben ist: (\"reporter\"\:\")+([([a-zA-Z]+) (([a-zA-Z]+))\"

Für den zweiten Ausdruck, die Regex ist: (\"reporter\"\:)+({\"name\":\"[a-zA-Z]+.[a-zA-Z]+\"})

In Java mit replaceAll haben wir:

output_row.json = output_row.json.replaceAll("(\"reporter\":\")+(([a-zA-Z]+))+\\u0020+(([a-zA-Z]+))\"","\"reporter\":{\"name\":\"$4.$2\"}"); 

Ale

+0

es wie json Format aussieht. Verwenden Sie einen Json-Parser. nicht Regex – Jens

Antwort

1

der Annahme, dass immer genau das Format und ohne weitere Informationen:

Regex: "reporter": "(\w+) (\w+)"

Ersetzen durch: "reporter":{"name":"$2.$1"}

Und dann denke ich nicht, dass Sie konvertieren können Klein mit Regex in Java so vielleicht tun Sie nur ein .toLowerCase()