import Foundation
let pattern = #"([a-zA-Z]+)[\s\-\.]+(\d{1,2})[\s\-\,]+(\d{4})"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
04/20/2009; 04/20/09; 4/3/09 7/8/71
Mar-20-2009; Mar 20, 2009; March 20, 2009; Mar. 20, 2009; Mar 20 2009
20 Mar 2009; 20 March 2009; 20 Mar. 2009; 20 March, 2009
Mar 20th, 2009; Mar 21st, 2009; Mar 22nd, 2009
Feb 2009; Sep 2009; Oct 2010
6/2008; 12/2009
6/1998 Primary Care Doctor:
2009; 2010
(4/10/71)Score-1Audit C Score Current: 9/27/75.
1; 10/13/1976 Audit C Score,
4-13-82 Other Child Mental occasion 5/21/77.
1; 10/13/1976 Audit C
(1988-now)
B12 969 2007
Lab: B12 969 2007
Ely 708-810-7787
February, 2010
URUGUAY September 1984.
7HH, April 1985 Hx of Outpatient
Venlafaxine 37.5mg daily: May, 2011: self-discontinued
) Paxil (Jan 1978) : sedation
LFTs WNL (October 1996)Problems Opioid dependence
"I wasn't getting anywhere" (April 1988)Prior
Prozac 20 mg daily: February, 1995: self-discontinued
sLexapro (1988-now): Good response (anxiety)
pOct 2015 - Admitted to Gray
lNovember 1990 - NPCCHx of Outpatient Treatment: Yes
"""#
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