import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?P<LogTime>[A-Za-z0-9 :]+)\\s(?P<Hostname>[a-z0-9.-]+)\\s(?:ae_(?P<EnvIdentity>[a-z-]+):)\\s(?P<ModuleName>[a-zA-Z._]+)?\\s-\\s(?P<LogLevel>[A-Z]+)\\s-\\s(?:\\[JID:(gen:)?(?P<TaskId>[a-z0-9-]+)\\]\\s?)?(?:\\[FID:(?P<FieldId>[a-z0-9-]+)\\]\\s?)?(?:\\[Itin:(?P<Itinerary>[A-Za-z0-9]+)(?:->(?P<Step>[A-Z0-9a-z]+))?\\]\\s?)?(?:\\[State:(?P<State>[A-Za-z]+)\\]\\s?)?(?:alias=(?P<StepAlias>[a-z0-9]+),\\s)?(?:runtime_s=\\[?(?P<JobRuntimeSeconds>[0-9.]+)\\]?\\s?)?(?:metadata=(?P<Metadata>\\{.*\\}))?$";
final String string = "Oct 30 09:54:06 production-ae-workers-d8c35 ae_env-name: ae.core.manager - INFO - [JID:gen:156364bc-fb25-11e9-8d15-02420af40b07] [FID:dead-f4rm-dead] [Itin:RunFieldForecastHourlyUpdate] [State:Finished] runtime_s=[16.03] metadata={\"initiating_event\": \"hourly\", \"hourly_timestamp\": \"2019/10/30/14/00\", \"timestamp\": \"2019/10/30/08/00\", \"pd_meta\": {\"farm\": {\"uuid\": \"dead-beef-dead\", \"name\": \"My Farm Name\"}, \"field\": {\"uuid\": \"dead-b00b-dead\", \"name\": \"My house\"}, \"token\": \"REDACTED\", \"organization\": {\"uuid\": \"dead-f00d-dead\", \"name\": \"My Organization\"}, \"enterprise_group\": {\"uuid\": \"dead-gr0up-dead\", \"name\": \"My Group\"}}, \"field_uuid\": \"dead-f4rm-dead\", \"token\": \"REDACTED\", \"process_cfs\": false, \"seed_corn\": false, \"current_cropping\": null, \"daily_timestamp\": \"2019/10/30/08/00\", \"ye_target\": \"user\", \"priority\": 3}";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
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