import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(DELIMITER ;;[\\S\\s]*?DELIMITER ;)";
final String string = "--\n"
+ "-- Dumping data for table `SOME_TABLE`\n"
+ "--\n\n"
+ "LOCK TABLES `SOME_TABLE` WRITE;\n"
+ "/*!40000 ALTER TABLE `SOME_TABLE` DISABLE KEYS */;\n"
+ "/*!40000 ALTER TABLE `SOME_TABLE` ENABLE KEYS */;\n"
+ "UNLOCK TABLES;\n"
+ "/*!50003 SET @saved_cs_client = @@character_set_client */ ;\n"
+ "/*!50003 SET @saved_cs_results = @@character_set_results */ ;\n"
+ "/*!50003 SET @saved_col_connection = @@collation_connection */ ;\n"
+ "/*!50003 SET character_set_client = utf8 */ ;\n"
+ "/*!50003 SET character_set_results = utf8 */ ;\n"
+ "/*!50003 SET collation_connection = utf8_general_ci */ ;\n"
+ "/*!50003 SET @saved_sql_mode = @@sql_mode */ ;\n"
+ "/*!50003 SET sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;\n"
+ "DELIMITER ;;\n"
+ "/*!50003 CREATE*/ /*!50017 */ /*!50003 TRIGGER SOME_TABLE_BU BEFORE UPDATE ON SOME_TABLE \n"
+ "FOR EACH ROW\n\n"
+ "BEGIN \n"
+ " \n"
+ " IF (OLD.DUE_DATE<>NEW.DUE_DATE) THEN\n"
+ " SET NEW.COUNT=0;\n"
+ " INSERT INTO SOME_TABLE_RESET_COUNT(SOME_TABLE_ID,CAL_DUE_DATE,COUNT,USER_ID) VALUES(OLD.ID,OLD.DUE_DATE,OLD.CYCLE_COUNT,NEW.CAL_BY);\n"
+ " END IF;\n"
+ "END */;;\n"
+ "DELIMITER ;\n"
+ "/*!50003 SET sql_mode = @saved_sql_mode */ ;\n"
+ "/*!50003 SET character_set_client = @saved_cs_client */ ;\n"
+ "/*!50003 SET character_set_results = @saved_cs_results */ ;\n"
+ "/*!50003 SET collation_connection = @saved_col_connection */ ;\n"
+ "/*!50003 SET @saved_cs_client = @@character_set_client */ ;\n"
+ "/*!50003 SET @saved_cs_results = @@character_set_results */ ;\n"
+ "/*!50003 SET @saved_col_connection = @@collation_connection */ ;\n"
+ "/*!50003 SET character_set_client = utf8 */ ;\n"
+ "/*!50003 SET character_set_results = utf8 */ ;\n"
+ "/*!50003 SET collation_connection = utf8_general_ci */ ;\n"
+ "/*!50003 SET @saved_sql_mode = @@sql_mode */ ;\n"
+ "/*!50003 SET sql_mode = 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;\n"
+ "DELIMITER ;;\n"
+ "/*!50003 CREATE*/ /*!50017 */ /*!50003 TRIGGER SOME_TABLE_AU\n"
+ "AFTER UPDATE ON SOME_TABLE \n"
+ "FOR EACH ROW\n\n"
+ "BEGIN \n"
+ " IF IFNULL(OLD.RESET_REASON,'') <> IFNULL(NEW.RESET_REASON,'') THEN\n"
+ " INSERT INTO SOME_TABLE_RESET_NEXT_DUE(REASON,SOME_TABLE_ID,NEW_CAL_DATE,OLD_CAL_DATE)\n"
+ " VALUES(NEW.RESET_REASON,NEW.ID,NEW.DUE_DATE,OLD.DUE_DATE);\n"
+ " END IF;\n"
+ "END */;;\n"
+ "DELIMITER ;\n"
+ "/*!50003 SET sql_mode = @saved_sql_mode */ ;\n"
+ "/*!50003 SET character_set_client = @saved_cs_client */ ;\n"
+ "/*!50003 SET character_set_results = @saved_cs_results */ ;\n"
+ "/*!50003 SET collation_connection = @saved_col_connection */ ;";
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