import Foundation
let pattern = #"\(.*\)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
France has the best pastries in the world (the fact that they're called "viennoiserie", like in "Vienna" is obviously irrelevant). France also has the best wine in the world (I also tend to drink entirely too much wine from Slovenia or Veneto, but again this is irrelevant - right?). Another thing where France excel is cheese (did you try Swiss gruyère? You should.)
France has hte best bread in the world (yeah, really (Really, really) Yeah I'm doing my own with flour, but I'd get a fresh French baguette anyday - with a few seeds in and lots of butter to spread)
"""#
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