import Foundation
let pattern = #"^(?>.+{{Images from Auckland Museum\|)(.*?)(?>}}.+)$"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"== {{int:filedesc}} == {{Artwork | description = {{en|1=At the equestrian show. A man stands in front of a stall selling radios.}} | title = ("Ultimate" stall) | artist = {{Creator:Tudor Washington Collins}} | date = 1938 | place of creation = | source = {{Images from Auckland Museum|section=library|object=photography|id=79483}} [https://api.aucklandmuseum.com/id/media/p/806abf5c0952f972e56bc95fed841c5031bcb9ff Photo] | accession number = 79483 (object number) | object type = | technique = Silver gelatin dry plate | dimensions = | institution = {{Institution:Auckland War Memorial Museum}} | permission = This image has been released as "CCBY" by Auckland Museum. For details refer to the [[Commons:Batch_uploading/AucklandMuseumCCBY|Commons project page]]. | credit line = | notes = | other_versions = <gallery> ("Ultimate" stall) (AM 79483-2).jpg </gallery> }} == {{int:license-header}} == {{CC-BY-4.0|1=Auckland Museum}} [[Category:Images uploaded by Fæ]] [[Category:1930s photographs in Auckland Museum]] [[Category:Tudor Washington Collins]] [[Category:Radio in Auckland Museum]] [[Category:Images from Auckland Museum]]"#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let matches = regex.matches(in: testString, range: stringRange)
var result: [[String]] = []
for match in matches {
var groups: [String] = []
for rangeIndex in 1 ..< match.numberOfRanges {
let nsRange = match.range(at: rangeIndex)
guard !NSEqualRanges(nsRange, NSMakeRange(NSNotFound, 0)) else { continue }
let string = (testString as NSString).substring(with: nsRange)
groups.append(string)
}
if !groups.isEmpty {
result.append(groups)
}
}
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