Search code examples
javaregexreplaceall

regular expression to replaceall substrings embedded in open curling brackets and followed by equal sign and digits


In the follwing String

String toBeFormatted= "[[LngLatAlt{longitude=-7.125924901999952, latitude=33.831783175000055, altitude=NaN},
 LngLatAlt{longitude=-5.401396163999948, latitude=35.92213140900003, altitude=NaN}]]"

1- I need to replace all "LngLatAlt{longitude=" with open bracket "["

2- also need to replace all the intermediate ", latitude=33.831783175000055, altitude=NaN}" with ",33.831783175000055]"

That way my string result :

"[[[-7.125924901999952,33.831783175000055],[-5.401396163999948,35.92213140900003]]]"

try it the following reg exp :

        String regexTarget = "(\\[\\[LngLatAlt\\{longitude=)";
        toBeFormatted.replaceAll(regexTarget, "\\[\\[\\[");
        String regexTarget0 = "(, altitude=NaN\\}, LngLatAlt\\{longitude=)";
        toBeFormatted.replaceAll(regexTarget0, "],\\[");
        String regexTarget1 = "(, latitude=)";
        toBeFormatted.replaceAll(regexTarget1, " ,");
        String regexTarget2 = "(, altitude=NaN\\})";
        toBeFormatted.replaceAll(regexTarget2, "]");

but it seems not working.

Thank you for your help.


Solution

  • try something like:

    String result = toBeFormatted.replaceAll("LngLatAlt\\{longitude=([^,]+), latitude=([^,]+), ([^}]+)\\}", "[$1, $2]");
    System.out.println(result);