import Foundation
let pattern = #"^(.*?),\s+(.*?),(.*?)\."#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
The George Washington University, Washington, DC, USA.
Department of Pathology, University of Oklahoma Health Sciences Center, Oklahoma City, USA. adekunle-adesina@ouhsc.edu
Department of Animal Sciences and Division of Nutritional Sciences, University of Illinois, Urbana, IL 61801, USA.
Department of Radiotherapy, Centre of Oncology-Maria Sklodowska-Curie Memorial Institute, Warsaw, Poland. gardas@cmkp.edu.pl
Eastern New York Occupational and Environmental Health Center, Mount Sinai School of Medicine, Department of Community Medicine, Albany, NY, USA. johanni2@crisny.org
"""#
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