import Foundation
let pattern = #"^(\s+)<ProjectReference(.|\s)+?(Project2)</Name>(.|\s)+?</ProjectReference>"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
<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>
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
if let firstMatch = regex.firstMatch(in: testString, range: stringRange) {
let result: [String] = (1 ..< firstMatch.numberOfRanges).map { (testString as NSString).substring(with: firstMatch.range(at: $0)) }
print(result)
} else {
print("No matches were found.")
}
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 Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression