import Foundation
let pattern = #"^"(?:(?:[^"]*)")+?,"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #""POLICE ARREST MAN ACCUSED\r\nOF MURDERING MISSING GIRL\r\n \r\nA New York man is in cust-\r\nody after he confessed to \r\nthe murder of a Sterling\r\ngirl who had been missing.\r\n \r\nJohn Ward of Palmyra was\r\npulled over on Snake\r\nMeadow Hill Road last\r\nnight after a state troop-\r\ner reported hearing a gun-\r\nshot. The officer thought\r\nit might be poachers.\r\n \r\nThe officer said Ward was\r\nacting \"nervous and\r\nsuspicious\" after being\r\npulled over. When quest-\r\nioned, Ward reportedly\r\nsaid \"I've killed her\".\r\nAccording to the police re-\r\nport, the officer called\r\nfor backup after Ward be-\r\ncame increasingly upset,\r\nsaying repeatedly that\r\nthere was \"a demon inside\r\nher\".\r\nWard was taken to Sterling\r\npolice headquarters for\r\nfurther questioning. Ward\r\nthen confessed to\r\nauthorities that he shot\r\nand killed Amy Martin, a\r\nseventeen year-old girl\r\nwho had been missing for\r\nnine days after escaping\r\nfrom a mental institution.\r\n \r\nAfter a brief search,\r\npolice located Amy's body\r\nin the woods near the now-\r\nabandoned Martin home. In\r\naddition to receiving a \r\ngunshot wound to the sto-\r\nmach, Amy showed injuries\r\nsuggesting that she had \r\nbeen thrown out of the \r\nsecond story window of\r\nthe house. An officer who\r\nhelped recover the body\r\ntold reporters that Amy's\r\nface had been \"mutilated\r\nin a very brutal manner\".\r\nWard was found dressed as\r\na priest when he was\r\npulled over. It is sus-\r\npected that he imperson-\r\nated a priest to gain his\r\nvictim's trust after\r\nCatholic authorities in\r\nRome confirmed that Ward\r\nwas not an ordained\r\nminister.\r\n \r\n(The rest of the article\r\nis missing.)\r\n","#
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