// 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)^(?P<unit_design>Z)(?P<unit_type>SFW|SF)(?P<unit_size>200|160|125|100|32|40|50|63|80)(?P<mounting_type>F)(?P<decompression_feature>0|1)(?P<sep_1>-)(?P<cracking_pressure>1)(?P<sep_2>-)(?P<unit_series>1X|2X)(?P<sep_3>/)(?P<seal_material>M|V)(?P<sep_4>/)(?P<pipe_port>12|01)(?P<orifice_position>D|)(?P<orifice_diameter>00|08|10|12|15|40|)(?P<additional_details>(.|[0-9])*)$").unwrap();
let string = "ZSF40F1-1-1X/M/01
ZSF40F0-1-1X/M/01
ZSF100F0-1-1X/M/01
ZSF80F1-1-1X/M/01D00
ZSF50F1-1-1X/M/01D00
ZSFW40F1-1-1X/M/01
ZSF100F1-1-1X/M/01
ZSFW100F1-1-1X/M/01
ZSF63F1-1-1X/M/01D00
ZSF80F0-1-1X/M/01D00
ZSF50F0-1-1X/M/01D00
ZSFW50F1-1-1X/M/01
ZSF40F0-1-1X/M/01SO1
ZSF63F0-1-1X/M/01D00
ZSFW80F0-1-1X/M/01
ZSFW100F0-1-1X/M/01
ZSFW80F1-1-1X/M/01
ZSF50F0-1-1X/M/01SO1
ZSF32F0-1-1X/M/01SO1
ZSF63F0-1-1X/M/01SO1
ZSFW160F0-1-1X/M/01
ZSFW40F0-1-1X/M/01
ZSFW63F1-1-1X/M/01
ZSFW63F0-1-1X/M/01
ZSFW50F0-1-1X/M/01
ZSF160F1-1-1X/M/01
ZSFW160F1-1-1X/M/01
ZSF160F0-1-1X/M/01
ZSF32F0-1-1X/M/01
ZSF32F1-1-1X/M/01SO6
ZSF100F1-1-1X/V/01
ZSF100F0-1-1X/M/01SO1
ZSF50F1-1-1X/M/01SO6
ZSF40F1-1-1X/M/01SO6
ZSFW32F0-1-1X/M/01
ZSF32F1-1-1X/M/01
ZSF80F0-1-1X/M/01SO1
ZSF80F1-1-1X/M/01SO1
ZSFW100F1-1-1X/V/01
ZSFW50F1-1-1X/V/01
ZSFW32F1-1-1X/M/01
ZSF160F0-1-1X/V/01
ZSF125F0-1-2X/M/01
ZSF125F1-1-2X/M/01
ZSFW125F1-1-2X/M/01
ZSFW125F0-1-2X/M/01
ZSF125F0-1-2X/V/01
ZSF125F1-1-2X/V/01
ZSFW125F0-1-2X/V/01
ZSF125F0-1-2X/M/01SO1
ZSF100F0-1-1X/V/01
ZSF63F0-1-1X/V/01D00
ZSF50F0-1-1X/V/01D00
ZSFW100F0-1-1X/V/01
ZSFW63F0-1-1X/V/01
ZSFW50F0-1-1X/V/01
ZSF125F1-1-2X/M/01SO6
ZSF200F0-1-2X/M/01D40
ZSFW200F0-1-2X/M/01D40
ZSFW125F1-1-2X/M/01SO6
ZSFW63F1-1-1X/V/01
ZSFW40F0-1-1X/V/01
ZSF160F1-1-1X/M/01SO12
ZSF125F0-1-2X/M/01SO6
ZSF160F0-1-1X/M/01SO6
ZSFW160F0-1-1X/M/01SO12
ZSF80F0-1-1X/V/01D00
ZSFW200F0-1-2X/V/01D40
ZSF100F0-1-1X/M/01SO13
ZSF125F0-1-2X/M/01SO13
ZSF125F0-1-2X/M/01SO14
ZSF63F0-1-1X/M/01D08
ZSF50F0-1-1X/M/01D08
ZSF80F0-1-1X/M/01D10
ZSF160F1-1-1X/M/01SO6
ZSF32F1-1-1X/M/01D08
ZSF100F0-1-1X/M/01D10
ZSF125F0-1-2X/M/01D12
ZSF160F0-1-1X/M/01D15
ZSF100F1-1-1X/M/01D10SO6
";
// 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/