// 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)([[:<:]]M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[VX]|V?I{0,3})[[:>:]])").unwrap();
let string = "### match ###
I II III IV V VI VII VIII IX
X XIII XIV XV XVIII XIX
XXV XXVI XXVII XXVII XXIX
XXX XXXIII XXXVIII XXXIX
XL XLII XLV XLVIII XLIX
L LI LII LIII LIV LV LVI LVII LVIII LIX
LX LXVI LXIX LXXIX LXXXV LXXXVIII
XC XCV XCVI XCVII XCIX
C CI CV CIX
CXI CXX CXXX CXXXVIII CXXXIX CXLII CL CLV CLVIII CLX CLXX CLXXX CXC CXCIII CXCVII CXCIX CC CCIII CCVIII CCIX CCXXV CCL CCLXXV CCCLXXV CD CDXXV CDL CDLXXV CDXC
D DIX DCLXVI DCLXXV DCCCXXVIII
CM CMLXXV
M ML MCV MCCCL MD MDCCXXV MDCCCLXXV MCML MCMXCVIII MCMXCIX
MM MMCCCXXV MMCDLXXV MMDL
MMM MMMCCXXVIII MMMCCCXXVIII MMMD
MMMCMXCV MMMCMXCVIII MMMCMXCIX
MMMM MMMMMMMMMCMXCIX MMMMMMMMMMMDCCXXXII
#### do not match ####
VV VVX XVV IIII IIIII IVIVIV XIIX XXXXII VC IIXV IC CXIIL
LVIXXX LIXXX XXXVIIII XXXVV MCVV MLTK IIV IIX IIL IIM IIC CCM
CMD CMDB L0L LOL GG RAF WTF XIIIXCVIIVMC MMIXIII CCCXXXIIX
MCMM MDCCLXXVIIII CCCD CCCXXXIIII MMMMXXXX";
// 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/