Я предполагаю выражение, похожее на:
(?::\[\[)?\[([-+]?\d+\.\d+)\s*,\s*([-+]?\d+\.\d+)\]\s*,?(?:\]\]}})?
с правильной заменой, которая будет использовать $1
и $2
в качестве lat
и lon
, например:
{\n"@type": "point",\n"lat":"$1",\n"lon":"$2"\n},\n
может работать до некоторой степени, но не полностью.
Тест
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression{
public static void main(String[] args){
final String regex = "(?::\\[\\[)?\\[([-+]?\\d+\\.\\d+)\\s*,\\s*([-+]?\\d+\\.\\d+)\\]\\s*,?(?:\\]\\]\\}})?";
final String string = ":[[[7.365046,46.948655],[7.365046,46.949254],[7.367558,46.949254],[7.367558,46.948655],[7.365046,46.948655]]]}}";
final String subst = "{\"@type\": \"point\",\"lat\":\"$1\",\"lon\":\"$2\"},";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
final String result = matcher.replaceAll(subst);
System.out.println(result);
}
}
Выход
{"@ type": "point", "lat": "7.365046", "lon": "46.948655"}, {"@ type": "point", "lat": "7.365046", "lon ":" 46.949254 "}, {" @ type ":" point "," lat ":" 7.367558 "," lon ":" 46.949254 "}, {" @ type ":" point "," lat ":"7.367558 "," lon ":" 46.948655 "}, {" @ type ":" point "," lat ":" 7.365046 "," lon ":" 46.948655 "},
RegEx Circuit
jex.im визуализирует регулярные выражения: