// 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"interface\s([\S]+?)\.(\d+)\s+(description\s(?:[^a-zA-Z0-9]?([\S]+)[^a-zA-Z0-9]?))*(?:encapsulation\sdot1q\s(\d+)\s*)*(?:second-dot1q\s(\S+)\s+)*(?:rewrite\singress\stag\s(.+?)\s{2,})*(?:service-policy\sinput\s([\S]+)\s+)*(?:service-policy\soutput\s([\S]+))*.+?(?:\s*!|\s+service\sinstance)").unwrap();
let string = "interface Loopback9 description RIFERIMENTO LDP/EoMPLS ip address 172.16.116.23 255.255.255.255!
interface Port-channel2 description KdC-TEST_ESPOSITO/CANDIDO_3263 mtu 9206 no ip address logging event link-status load-interval 30 shutdown
service instance 301 ethernet description LINK-to-OLO encapsulation dot1q 269 second-dot1q 301 rewrite ingress tag pop 1 symmetric group 12333 service-policy input BTS_P01_B-96k_B3-0_B5-0_B6-0_IN service-policy output BTS_P01_B-96k_B3-0_B5-0_B6-0_OUT xconnect 172.16.116.249 570435069 encapsulation mpls mtu 9206
service instance 301 ethernet description LINK-to-OLO encapsulation dot1q 269 second-dot1q 301 rewrite ingress tag pop 1 symmetric group 12333 service-policy input BTS_P01_B-96k_B3-0_B5-0_B6-0_IN service-policy output BTS_P01_B-96k_B3-0_B5-0_B6-0_OUT xconnect 172.16.116.249 570435069 encapsulation mpls mtu 9206 !
service instance 4001 ethernet description SI_VLAN-PING encapsulation dot1q 4001 rewrite ingress tag pop 1 symmetric service-policy input PING_LIMIT bridge-domain 4001 !!
interface Port-channel2.302 description \"vlan_pseudo_lato_olo\" encapsulation dot1q 1327 second-dot1q 1001 rewrite ingress tag pop 1 symmetric service-policy input GBE_remark_in service-policy output GBE_remark_out !
interface Port-channel2.302 description test_subif!";
// 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/