import Foundation
let pattern = #"<(\/)?(.*?)>"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>xmp</string>
</array>
<key>name</key>
<string>XMP</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>?????????????????????????????????</string>
<key>name</key>
<string>source.keyword.xmp</string>
</dict>
</array>
<key>scopeName</key>
<string>source.xmp</string>
<key>uuid</key>
<string>750d3b02-a1bc-4b09-a794-1b78c54a4e21</string>
</dict>
</plist>
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let substitutionString = #"[\1\2]"#
let result = regex.stringByReplacingMatches(in: testString, range: stringRange, withTemplate: substitutionString)
print(result)
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