// 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"(?i)^[^]*?`{3}(?:json)?\n(.*[^]*?)\n`{3}[^]*?$").unwrap();
let string = "```json
[
{
\"questionType\": \"singleselect\",
\"shortDescription\": \"Who will own the Intellectual Property rights developed during the provision of services?\",
\"fullDescription\": \"According to the agreement, who will own the Intellectual Property rights developed during the provision of services?\",
\"options\": [
\"The Consultant\",
\"The Client\",
\"Both parties\"
]
},
{
\"questionType\": \"multipleselect\",
\"shortDescription\": \"What are included in Intellectual Property rights according to the agreement?\",
\"fullDescription\": \"What are included in Intellectual Property rights according to the agreement? (Select all that apply)\",
\"options\": [
\"Patents\",
\"Design\",
\"Trademark\",
\"Know-how\",
\"Trade secrets\",
\"Other\"
]
},
{
\"questionType\": \"textinput\",
\"shortDescription\": \"What rights does the Client have regarding the projects and products resulting from the services?\",
\"fullDescription\": \"What specific rights does the Client have regarding the projects and products resulting from the services?\",
\"options\": []
}
]
```";
// 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/