// 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"(//[^\n]+)|(/\*.*?\*/)").unwrap();
let string = "#define MC2
#define MC1
# ifndef MCTEST
#define MCTEST
#ifdef MC1
#define data1 0x20
/*cmment start*/#define /*this is comment*/ data2 2.5f
#define date3 L\"this is a data\"
#define data4 true
#ifdef MC2
#define data5 'a'
#define data6 { {2.0, \"abc\"}, {1.5, \"def\"}, {5.6f, \"7.2\"}} // ¸¡µãÓë×Ö·û´®×é³ÉµÄ½á¹¹Ìå³õʼ»¯¾ÛºÏ£¬ ÔÙ½øÒ»²½¾ÛºÏ×é³ÉÁËÊý×é
#else //else MC2
# define data5 {5.0, 7.5, 3.8}
#define data6 'c'
#endif //end MC2
#ifdef MC3
//¼ÙifǶÌ×£¬ÓÃÓÚ²âÊÔ£¬ÔÚÓ¦¸Ã±»ºöÂÔµÄÇé¿öÏ£¬#endifµÄ¼æÈÝÇé¿ö
#endif //end MC3
#else//else MC1
\"//ccc\"
\"/*bbb*/\"
\"/**/\"
//\"//bbb\"
/*\"jjjjj\"*/
#define data1 1.0f /* this is float
may be changed
*/
#define data2 2
#define date3 false
#define data4 \"this is a data\"
#ifdef MC2
#define data5 'B'
#define data6 {1, 6, 3}
#define data7 0xa
#else//else MC2
#define data5 'D'
#define data6 {1, 6}
#endif //end MC2
#endif //MC1
#ifdef MC2
#undef MC2
#endif
/*ÔÚ¶àÐÐ×¢ÊͺóÃæ½ô¸úÒ»¸öµ¥ÐÐ×¢ÊÍ*///½ô¸úµÄµ¥ÐÐ×¢ÊÍ
#endif // !MC_TEST";
// 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/