регулярное выражение для замены всех подстрок, встроенных в открытые скручивающиеся скобки, за которыми следуют знак равенства и цифры - PullRequest
1 голос
/ 27 февраля 2020

В следующей строке:

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

1 - мне нужно заменить все "LngLatAlt {longitude =" на открытую скобку "["

2- также нужно заменить все промежуточные ", широта = 33.831783175000055, высота = NaN}" на ", 33.831783175000055]"

Таким образом, мой результат строки:

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

попробуйте следующий 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, "]");

, но, похоже, он не работает.

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 27 февраля 2020

попробуйте что-то вроде:

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