// 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"^(\s+)<ProjectReference(.|\s)+?(Project2)</Name>(.|\s)+?</ProjectReference>").unwrap();
let string = " <ProjectReference Include=\"..\\..\\Project1\\Project1\\Project1.csproj\">
<Project>{714c6b26-c609-40a4-80a9-421bd842562d}</Project>
<Name>Project1</Name>
</ProjectReference>
<ItemGroup>
<ProjectReference Include=\"..\\..\\Project2\\Project2.csproj\">
<Project>{6c2a7631-8b47-4ae9-a68f-f728666105b9}</Project>
<Name>Project2</Name>
</ProjectReference>
<ProjectReference Include=\"..\\..\\Project3\\Project3\\Project3.csproj\">
<Project>{39860208-8146-429f-a1d1-5f8ed2fd7f5f}</Project>
<Name>Project3</Name>
</ProjectReference>
<ProjectReference Include=\"..\\..\\Project4\\Project4.csproj\">
<Project>{58144d60-19d9-4d11-8ae6-088e03ccf874}</Project>
<Name>Project4</Name>
</ProjectReference>
<ProjectReference Include=\"..\\..\\Project5\\Project5.csproj\">
<Project>{33baa509-ad24-4a72-a2fc-8f297e75e90d}</Project>
<Name>Project5</Name>
</ProjectReference>
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition=\"'$(VisualStudioVersion)' == ''\">10.0</VisualStudioVersion>
<VSToolsPath Condition=\"'$(VSToolsPath)' == ''\">$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>";
// 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/