import Foundation
let pattern = ##"""
<img\s+
(?=[^>]*\balt="(?<alt>[^>]*?)")? # optional alt attribute
(?=[^>]*\bclass="(?<class>[^>]*?)")? # optional class attribute
(?=[^>]*\bsrc="(?<src>[^>]*?)") # src attribute
[^>]*\/>
"""##
let regex = try! NSRegularExpression(pattern: pattern, options: .allowCommentsAndWhitespace)
let testString = #"""
<img src="image.png" alt="test" style="zoom:55%;" />
<img class="big" src="image2.png" />
<img alt="test" src="image.png" style="zoom:55%;" />
<img src="image.png" class="small" style="zoom:55%;" alt="test" />
<img src="image.png" alt="test" style="zoom:55%;" />
<img src="image.png"
alt="test"
style="zoom:55%;" />
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let substitutionString = #"![${alt}](${src}){.${class}}"#
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