// 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"(?s)SQL: \[\d+\] (?<sql>.*) Sent SQL: \[\d+\] (?<send_sql>.*) Params:").unwrap();
let string = "SQL: [126] INSERT INTO `tbl_ip_data` (`ip_start`, `ip_end`, `region_id`, `country_id`, `create_at`)
VALUES (:v0d, :v1d, :v2d, :v3d, :v4d) Sent SQL: [163] INSERT INTO `tbl_ip_data` (`ip_start`, `ip_end`, `region_id`, `country_id`, `create_at`)
VALUES ('1900145563', '1900145563', '440118', 'CN', '2022-04-15 21:46:42') Params: 5 Key: Name: [4] :v0d paramno=-1 name=[4] \":v0d\" is_param=1 param_type=2 Key: Name: [4] :v1d paramno=-1 name=[4] \":v1d\" is_param=1 param_type=2 Key: Name: [4] :v2d paramno=-1 name=[4] \":v2d\" is_param=1 param_type=2 Key: Name: [4] :v3d paramno=-1 name=[4] \":v3d\" is_param=1 param_type=2 Key: Name: [4] :v4d paramno=-1 name=[4] \":v4d\" is_param=1 param_type=2 [] []";
// result will be a tuple containing the start and end indices for the first match in the string
let result = regex.captures(string);
let (start, end) = match result {
Some((s, e)) => (s, e),
None => {
// ...
}
};
println!("{}", &string[start, end]);
}
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/