// 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"'Target.*Write MBps\n(?:[\w; %\.]+,){9}([\w; %\.]+)").unwrap();
let string = "'Test Type,Test Description,,,,,,,,,,
0,,,,,,,,,,,
'Version,,,,,,,,,,,
2006.07.27,,,,,,,,,,,
'Time Stamp,,,,,,,,,,,
2016-01-06 19:40:56:182,,,,,,,,,,,
'Test Type,Test Description,,,,,,,,,,
0,,,,,,,,,,,
'Version,,,,,,,,,,,
2006.07.27,,,,,,,,,,,
'Time Stamp,,,,,,,,,,,
2016-01-06 19:41:32:625,,,,,,,,,,,
'Test Type,Test Description,,,,,,,,,,
0,,,,,,,,,,,
'Version,,,,,,,,,,,
2006.07.27,,,,,,,,,,,
'Time Stamp,,,,,,,,,,,
2016-01-06 19:41:53:145,,,,,,,,,,,
'Test Type,Test Description,,,,,,,,,,
0,,,,,,,,,,,
'Version,,,,,,,,,,,
2006.07.27,,,,,,,,,,,
'Time Stamp,,,,,,,,,,,
2016-01-06 19:43:53:456,,,,,,,,,,,
'Access specifications,,,,,,,,,,,
'Access specification name,default assignment,,,,,,,,,,
512B; 100% Read; 0% random,0,,,,,,,,,,
'size,% of size,% reads,% random,delay,burst,align,reply,,,,
209715712,100,100,0,0,1,0,0,,,,
'End access specifications,,,,,,,,,,,
'Results,,,,,,,,,,,
'Target Type,Target Name,Access Specification Name,# Managers,# Workers,# Disks,IOps,Read IOps,Write IOps,MBps,Read MBps,Write MBps
ALL,All,512B; 100% Read; 0% random,1,1,1,0.571416,0.571416,0,114.283511,114.283511,0
MANAGER,A01030016NB,512B; 100% Read; 0% random,,1,1,0.571416,0.571416,0,114.283511,114.283511,0
PROCESSOR,CPU 0,,,,,,,,,,
PROCESSOR,CPU 1,,,,,,,,,,
PROCESSOR,CPU 2,,,,,,,,,,
PROCESSOR,CPU 3,,,,,,,,,,
WORKER,Worker 1,512B; 100% Read; 0% random,,,1,0.571416,0.571416,0,114.283511,114.283511,0
DISK,F:新增磁碟區,,,,,0.571416,0.571416,0,114.283511,114.283511,0
'Time Stamp,,,,,,,,,,,
2016-01-06 19:44:21:973,,,,,,,,,,,
'Test Type,Test Description,,,,,,,,,,
0,,,,,,,,,,,
'Version,,,,,,,,,,,
2006.07.27,,,,,,,,,,,
'Time Stamp,,,,,,,,,,,
2016-01-06 19:45:17:785,,,,,,,,,,,
'Access specifications,,,,,,,,,,,
'Access specification name,default assignment,,,,,,,,,,
512B; 100% Read; 0% random,0,,,,,,,,,,
'size,% of size,% reads,% random,delay,burst,align,reply,,,,
102912,100,100,0,0,1,0,0,,,,
'End access specifications,,,,,,,,,,,
'Results,,,,,,,,,,,
'Target Type,Target Name,Access Specification Name,# Managers,# Workers,# Disks,IOps,Read IOps,Write IOps,MBps,Read MBps,Write MBps
ALL,All,512B; 100% Read; 0% random,1,1,1,1216.250748,1216.250748,0,119.36836,119.36836,0
MANAGER,A01030016NB,512B; 100% Read; 0% random,,1,1,1216.250748,1216.250748,0,119.36836,119.36836,0
PROCESSOR,CPU 0,,,,,,,,,,
PROCESSOR,CPU 1,,,,,,,,,,
PROCESSOR,CPU 2,,,,,,,,,,
PROCESSOR,CPU 3,,,,,,,,,,
WORKER,Worker 1,512B; 100% Read; 0% random,,,1,1216.250748,1216.250748,0,119.36836,119.36836,0
DISK,F:新增磁碟區,,,,,1216.250748,1216.250748,0,119.36836,119.36836,0
'Time Stamp,,,,,,,,,,,
2016-01-06 19:45:30:673,,,,,,,,,,,";
// result will be a tuple containing the start and end indices for the first match in the string
let result = regex.captures(string);
let (start, end) = match result {
Some((s, e)) => (s, e),
None => {
// ...
}
};
println!("{}", &string[start, end]);
}
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/