// 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)(?<!SQ\d{0}|\d|\d{2})(51\d{14}|52\d{14}|53\d{14}|54\d{14}|55\d{14}|36\d{12}|34\d{13}|37\d{13}|4\d{15}|4\d{12}|\d{4}(-|\s)\d{4}(-|\s)\d{4}(-|\s)\d{4}|\d{3}(-|\s)\d{3}(-|\s)\d{3}(-|\s)\d{3}(-|\s)\d{3}|\d{4}(-|\s)\d{6}(-\s)\d{5}|6\d{15})").unwrap();
let string = "<Payment>
<PCard expiration=\"2061-04-00\" name=\"Grainger AB\" number=\"41111111111111114222222222222\"/>
</Payment>
<PCard expiration=\"2022-04\" number=\"4005-5511-2233-4450\"/>
<Payment>
Space
<PCard expiration=\"2022-04\" number=\"4005 5511 2233 4450\"/>
Tab space
<PCard expiration=\"2022-04\" number=\"4005 551122334450\"/>
<PCard expiration=\"2022-04\" number=\"4005 5511 2233 4450\"/>
new line
<PCard expiration=\"2022-04\" number=\"4005400540054005\"/>
<PCard expiration=\"2022-04\" number=\"4005 5511 2233 4450\"/>
carriage return
<PCard expiration=\"2022-04\" number=\"4005 5511 2233 4450\"/>
</Payment>
combination of
<Payment>
<PCard expiration=\"2022-04\" number=\"4005- 5511 -2233-4450\"/>
</Payment>
<PCard expiration=\"2061-04-00\" name=\"Grainger AB\" number=\"4255726800010\"/>
<PCard expiration=\"2061-04-00\" name=\"Grainger AB\" number=\"@#@@@$@4255726800010\"/>
<PCard expiration=\"2061-04-00\" name=\"Grainger AB\" number=\"SQ#4255726800010\"/>
<PCard expiration=\"2061-04-00\" name=\"Grainger AB\" number=\"45a$4255726800010\"/>
<PCard expiration=\"2061-04-00\" name=\"Grainger AB\" number=\"12SQ%4255726800010\"/>
<PCard expiration=\"2061-04-00\" name=\"Grainger AB\" number=\"4255726800010@121212\"/>
<PCard expiration=\"2061-04-00\" name=\"Grainger AB\" number=\"4255726800010#SQ\"/>
<PCard expiration=\"2061-04-00\" name=\"Grainger AB\" number=\"4255726800010$a54\"/>
<PCard expiration=\"2061-04-00\" name=\"Grainger AB\" number=\"4255726800010%SQ12\"/>
<SupplierPartID>4222222222222</SupplierPartID>
<SupplierPartID> 4222222222222</SupplierPartID>
<SupplierPartID>SQ4222222222222</SupplierPartID>
<SupplierPartID>SQ134222222222222</SupplierPartID>
<SupplierPartAuxiliaryID>WWGSQ134256726800010</SupplierPartAuxiliaryID>
";
// 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/