// 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"dcs.lustre.device.ost.attributes\[.*-((.*).+?),.*,rate\]").unwrap();
let string = "[
{
itemid: \"26940\",
status: \"0\",
lastvalue: \"60843699081216\",
lastclock: \"1454321651\",
key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0000,kbytesavail]\",
name: \"OST0000 available space\",
hostname: \"lustre_plexfs\",
value: \"lustre\",
delay: \"60\",
value_type: \"3\",
units: \"Bytes\",
category: \"performance\",
type: \"filesystem\",
history: \"90\"
},
{
itemid: \"26943\",
status: \"0\",
lastvalue: \"61486384615424\",
lastclock: \"1454321686\",
key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0001,kbytesfree]\",
name: \"OST0001 free space\",
hostname: \"lustre_plexfs\",
value: \"lustre\",
delay: \"5\",
value_type: \"3\",
units: \"Bytes\",
category: \"performance\",
type: \"filesystem\",
history: \"90\"
},
{
itemid: \"26944\",
status: \"0\",
lastvalue: \"62068190941184\",
lastclock: \"1454272094\",
key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0000,kbytestotal]\",
name: \"OST0000 total space\",
hostname: \"lustre_plexfs\",
value: \"lustre\",
delay: \"86400\",
value_type: \"3\",
units: \"Bytes\",
category: \"performance\",
type: \"filesystem\",
history: \"90\"
},
{
itemid: \"26945\",
status: \"0\",
lastvalue: \"62068190941184\",
lastclock: \"1454272092\",
key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0001,kbytestotal]\",
name: \"OST0001 total space\",
hostname: \"lustre_plexfs\",
value: \"lustre\",
delay: \"86400\",
value_type: \"3\",
units: \"Bytes\",
category: \"performance\",
type: \"filesystem\",
history: \"90\"
},
{
itemid: \"26946\",
status: \"0\",
lastvalue: \"0\",
lastclock: \"1454321686\",
key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0000,read_bytes,rate]\",
name: \"OST0000 read\",
hostname: \"lustre_plexfs\",
value: \"lustre\",
delay: \"5\",
value_type: \"3\",
units: \"Bytes/sec\",
category: \"performance\",
type: \"filesystem\",
history: \"90\"
},
{
itemid: \"26942\",
status: \"0\",
lastvalue: \"61477895307264\",
lastclock: \"1454321686\",
key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0000,kbytesfree]\",
name: \"OST0000 free space\",
hostname: \"lustre_plexfs\",
value: \"lustre\",
delay: \"5\",
value_type: \"3\",
units: \"Bytes\",
category: \"performance\",
type: \"filesystem\",
history: \"90\"
},
{
itemid: \"26951\",
status: \"0\",
lastvalue: \"2878341087\",
lastclock: \"1454321686\",
key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0001,write_bytes,rate]\",
name: \"OST0001 write\",
hostname: \"lustre_plexfs\",
value: \"lustre\",
delay: \"5\",
value_type: \"3\",
units: \"Bytes/sec\",
category: \"performance\",
type: \"filesystem\",
history: \"90\"
},
{
itemid: \"26950\",
status: \"0\",
lastvalue: \"3185573852\",
lastclock: \"1454321686\",
key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0000,write_bytes,rate]\",
name: \"OST0000 write\",
hostname: \"lustre_plexfs\",
value: \"lustre\",
delay: \"5\",
value_type: \"3\",
units: \"Bytes/sec\",
category: \"performance\",
type: \"filesystem\",
history: \"90\"
},
{
itemid: \"26947\",
status: \"0\",
lastvalue: \"0\",
lastclock: \"1454321686\",
key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0001,read_bytes,rate]\",
name: \"OST0001 read\",
hostname: \"lustre_plexfs\",
value: \"lustre\",
delay: \"5\",
value_type: \"3\",
units: \"Bytes/sec\",
category: \"performance\",
type: \"filesystem\",
history: \"90\"
}
]";
// 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/