package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)(DELIMITER ;;[\S\s]*?DELIMITER ;)`)
var str = `--
-- Dumping data for table \`SOME_TABLE\`
--
LOCK TABLES \`SOME_TABLE\` WRITE;
/*!40000 ALTER TABLE \`SOME_TABLE\` DISABLE KEYS */;
/*!40000 ALTER TABLE \`SOME_TABLE\` ENABLE KEYS */;
UNLOCK TABLES;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client = utf8 */ ;
/*!50003 SET character_set_results = utf8 */ ;
/*!50003 SET collation_connection = utf8_general_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 */ /*!50003 TRIGGER SOME_TABLE_BU BEFORE UPDATE ON SOME_TABLE
FOR EACH ROW
BEGIN
IF (OLD.DUE_DATE<>NEW.DUE_DATE) THEN
SET NEW.COUNT=0;
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);
END IF;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client = utf8 */ ;
/*!50003 SET character_set_results = utf8 */ ;
/*!50003 SET collation_connection = utf8_general_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 */ /*!50003 TRIGGER SOME_TABLE_AU
AFTER UPDATE ON SOME_TABLE
FOR EACH ROW
BEGIN
IF IFNULL(OLD.RESET_REASON,'') <> IFNULL(NEW.RESET_REASON,'') THEN
INSERT INTO SOME_TABLE_RESET_NEXT_DUE(REASON,SOME_TABLE_ID,NEW_CAL_DATE,OLD_CAL_DATE)
VALUES(NEW.RESET_REASON,NEW.ID,NEW.DUE_DATE,OLD.DUE_DATE);
END IF;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;`
for i, match := range re.FindAllString(str, -1) {
fmt.Println(match, "found at index", 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 Golang, please visit: https://golang.org/pkg/regexp/