import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "# Time:\\s(?<timestamp>.*)\\n#.*Id:\\s(?<id>.*)\\n#\\sQuery_time:\\s(?<duration>[\\d.]*)\\s.*time:\\s(?<lock_time>[\\d.]*)\\s.*_sent:\\s(?<returned>\\d*)\\s.*_examined:\\s(?<searched>\\d*)\\n(?<sql>[\\s\\S]*)";
final String string = " \n"
+ "# Time: 210607 16:27:16\n"
+ "# User@Host: doctime_db_usr[doctime_db_usr] @ [10.2.0.79] Id: 13021\n"
+ "# Query_time: 20.504504 Lock_time: 0.000233 Rows_sent: 52 Rows_examined: 13827347\n"
+ "SET timestamp=1623083236;\n"
+ "SELECT\n"
+ "substring( substring_index( uri, '/', -1 ) , 1, LENGTH(substring_index( uri, '/', -1 )) - 38 ) AS uri,\n"
+ "namespace,\n"
+ "method,\n"
+ "count(*) AS hits\n"
+ "FROM\n"
+ "user_hits\n"
+ "WHERE\n"
+ "namespace = 'hospitals' AND\n"
+ "controller = 'queue' AND\n"
+ "method = 'file'\n"
+ "GROUP BY\n"
+ "substring( substring_index( uri, '/', -1 ) , 1, LENGTH(substring_index( uri, '/', -1 )) - 38 )\n"
+ "UNION\n"
+ "SELECT\n"
+ "uri,\n"
+ "namespace,\n"
+ "method,\n"
+ "count(*) AS hits\n"
+ "FROM\n"
+ "user_hits\n"
+ "WHERE\n"
+ "uri LIKE '%export%'\n"
+ "GROUP BY\n"
+ "method\n"
+ "ORDER BY hits DESC;\n";
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