// 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"<\?xml(.+?)\?>").unwrap();
let string = "<?xml version=\"1.0\" encoding=\"utf-8\"?>
<ns1:StudySQL_response xmlns:ns1=\"urn:global:cs:jdbc:study\">
<Statement_response>
<row>
<XMLTYPE.GETSTRINGVAL(MESSAGE)><study studypid="200">
<studyname>&quot;Immume Treat Phase3&quot;</studyname>
<statusCD>ongoing</statusCD>
<clinicalphase>III</clinicalphase>
<primaryIndication>for lung cancer</primaryIndication>
<startDate>2010-Jun-28</startDate>
</study>
</XMLTYPE.GETSTRINGVAL(MESSAGE)>
</row>
<row>
<XMLTYPE.GETSTRINGVAL(MESSAGE)><study studypid="201">
<studyname>&quot;ABPM Study&quot;</studyname>
<statusCD>on hold</statusCD>
<clinicalphase>III</clinicalphase>
<primaryIndication>skin cancel</primaryIndication>
<startDate>2015-Mar-08</startDate>
</study>
</XMLTYPE.GETSTRINGVAL(MESSAGE)>
</row>
</Statement_response>
</ns1:StudySQL_response>
";
// 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/