import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^SQL> (--L-[0-9]{8})(.*?)(?=SQL> --L-[0-9]{8}|\\Z)";
final String string = "SQL> --L-93752133\n"
+ "SQL> --SELECT table_name, tablespace_name from dba_tables where upper(table_name) like &tablename_from_developer;\n"
+ "SQL> \n"
+ "SQL> --L-52852243\n"
+ "SQL> \n"
+ "SQL> SELECT log_mode FROM v$database;\n\n"
+ " LOG_MODE\n"
+ " ------------\n"
+ " NOARCHIVELOG\n\n"
+ "SQL> \n"
+ "SQL> archive log list\n"
+ " Database log mode No Archive Mode\n"
+ " Automatic archival Disabled\n"
+ " Archive destination USE_DB_RECOVERY_FILE_DEST\n"
+ " Oldest online log sequence 3\n"
+ " Current log sequence 5\n"
+ "SQL> \n"
+ "SQL> --L-42127143\n"
+ "SQL> \n"
+ "SQL> SELECT t.name \"TSName\", e.encryptionalg \"Algorithm\", d.file_name \"File Name\"\n"
+ " 2 FROM v$tablespace t\n"
+ " 3 , v$encrypted_tablespaces e\n"
+ " 4 , dba_data_files d\n"
+ " 5 WHERE t.ts# = e.ts#\n"
+ " 6 AND t.name = d.tablespace_name;\n\n"
+ " no rows selected";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.DOTALL);
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