// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r"(?m)(DELIMITER ;;[\S\s]*?DELIMITER ;)").unwrap();
let string = "--
-- 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 */ ;";
// result will be an iterator over tuples containing the start and end indices for each match in the string
let result = regex.captures_iter(string);
for mat in result {
println!("{:?}", mat);
}
}
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 Rust, please visit: https://docs.rs/regex/latest/regex/