// 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)(?i)(data)\s+((\w+)(?=(\s*))(?:\4\w+)+)?\s*(\(((.|\n)*?)\);)?").unwrap();
let string = "data foo (drop = DISCOUNT price RENAME = ( PROV_NM1= PROV_NM PROV_ST_NM1 = PROV_ST_NM) where = ( product = 'whizmo' and product < 10 )) bar( drop= DISCOUNT price rename= ( startDate = beginDate ) );
Data Data_asof&YrMon.;
data halfYear( drop= DISCOUNT price
rename= ( startDate = beginDate ) where=(product = 'abc' and price > 10) );
data apply_adj_v2 non_adjusted incorrect_acct;
data apply_adj_v2;
DATA INPDTL1(RENAME=(PROV_NM1=PROV_NM PROV_ST_NM1=PROV_ST_NM));
DATA REIMB_MTHD_CLM2;
";
// 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/