import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?s)^.*?\\\"longitude[^\\[]*?\\\"activity[^\\[]*\\[[^\\]]*?timestampMs\\\"[^\\\"\\]]*\\\"(\\d+)\\\"[^\\]]*WALKING[^\\]]*?confidence\\\"\\s*:\\s*(\\b\\d{1,3}\\b)[^\\]]*?\\].*$";
final String string = " }, {\n"
+ " \"timestampMs\" : \"1515564666086\", ◁― Don't need this but it won't hurt\n"
+ " \"latitudeE7\" : -6857630899, \n"
+ " \"longitudeE7\" : -1779694452999,\n"
+ " \"activity\" : [ {\n"
+ " \"timestampMs\" : \"1515564665992\", ◁― EXAMPLE: I want only this, and...\n"
+ " \"activity\" : [ {\n"
+ " \"type\" : \"STILL\",\n"
+ " \"confidence\" : 65\n"
+ " }, {\n"
+ " \"type\" : \"TILTING\", ↓\n"
+ " \"confidence\" : 4\n"
+ " }, {\n"
+ " \"type\" : \"IN_RAIL_VEHICLE\",\n"
+ " \"confidence\" : 20\n"
+ " }, {\n"
+ " \"type\" : \"IN_ROAD_VEHICLE\",\n"
+ " \"confidence\" : 5\n"
+ " }, {\n"
+ " \"type\" : \"ON_FOOT\", ↓\n"
+ " \"confidence\" : 3\n"
+ " }, {\n"
+ " \"type\" : \"UNKNOWN\",\n"
+ " \"confidence\" : 3\n"
+ " }, {\n"
+ " \"type\" : \"WALKING\", ◁― ...AND, I also want this.\n"
+ " \"confidence\" : 3\n"
+ " } ]\n"
+ " } ]\n"
+ " }, {\n"
+ " \"timestampMs\" : \"1515564662594\", ◁― Don't need this but it won't hurt\n"
+ " \"latitudeE7\" : -6857630899, \n"
+ " \"longitudeE7\" : -1779694452999,\n"
+ " \"altitude\" : 42\n"
+ " }, {";
final String subst = "\\1 \\2";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
System.out.println("Substitution result: " + result);
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html