// 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"(?mu)^(?P<meta1s>(?:\[[^\]]+\])*)(?P<name>.+(?=\[))(?P<ep>(?:\[(?:(?:NC)?(?:OP|ED|SP(?:\d{2})?)\])|\[(?:\d{2}(?:(?:\.\d+)?(?:_v\d+)?)?)\]))(?P<metas>(?:\[[^\]]+\])*)(?P<others>(?:.*?))(?P<ext>\.(?:mkv|mp4|srt|ass))$").unwrap();
let string = "[VCB-Studio] Sword Art Online Alicization War of Underworld [11][Ma10p_1080p][x265_flac].mkv
[UHA-WINGS&RATH][Sword Art Online - Alicization -War of Underworld-][11][BDRIP 1920x1080 HEVC-YUV420P10 FLAC].sc.ass
[Nekomoe kissaten][Do It Yourself!!][04][1080p][JPSC].mp4
[UHA-WINGS&VCB-Studio] Kobayashi-san Chi no Meidoragon S [NCOP][Ma10p_1080p][x265_flac].mkv
[Hakugetsu&VCB-Studio] No Game No Life [SP03][Hi10p_1080p][x264_flac].mkv
(UHA-SGNIW) NoSQL [SP06] the anime [loolol] (LLLKKK) [SP99] ilikexd [speranza].mkv";
let substitution = "\\g<meta1s>\\g<name>\\g<ep>\\g<metas>[SOX Edition]\\g<others>\\g<ext>";
// result will be a String with the substituted value
let result = regex.replace_all(string, substitution);
println!("{}", result);
}
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/