// 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)<slot-configuration slot-id="refinebar-slot-content" context="category" context-id="(.*)" configuration-id="(.*?)"( default="(?:.*)?")? assigned-to-site="(.*)">\s*<template>(.*)<\/template>\s*<enabled-flag>(.*)<\/enabled-flag>\s*<content>\s*<content-assets>(\s*<content-asset content-id=".*"\/>)*\s*<content-asset content-id="(seo-.*)"\/>\s*(?:<content-asset content-id=".*"\/>\s*)*<\/content-assets>\s*<\/content>(\s*<customer-groups>(?:\s*<customer-group group-id=".*"\/>)+\s*<\/customer-groups>|.*)?\s*<\/slot-configuration>"#).unwrap();
let string = " <slot-configuration slot-id=\"refinebar-slot-content\" context=\"category\" context-id=\"sport-garcon\" configuration-id=\"seo-boutique-sport-garcon-2\" default=\"true\" assigned-to-site=\"true\">
<template>slots/content/htmljustcontent.isml</template>
<enabled-flag>true</enabled-flag>
<content>
<content-assets>
<content-asset content-id=\"seo-boutique-bbf-2\"/>
<content-asset content-id=\"account-menu-content-management\"/>
<content-asset content-id=\"seo-boutique-sport-garcon\"/>
</content-assets>
</content>
</slot-configuration> ";
let substitution = "$0 <slot-configuration slot-id=\"mobile-refinebar-slot-content\" context=\"category\" context-id=\"$1\" configuration-id=\"$2-mobile\"$3 assigned-to-site=\"$4\"> <template>$5</template> <enabled-flag>$6</enabled-flag> <content> <content-assets> <content-asset content-id=\"$8\"/> </content-assets> </content>$9 </slot-configuration>";
// 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/