import Foundation
let pattern = #"^(?i)CHOC.*[.csv]$"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
CHOC_METRICS_2020-06-16.csv
Claims_PGSEO_20200110.txt
Claims_Agilon_20200110.txt
COPC_PE20190701_REHCF.TXT
Member_Agilon_PGSEO_Current_QualityRA_History_20200116.txt
Member_Agilon_PGSEO_Current_QualityRA_20200215.txt
Member_Agilon_PGSEO_Locked_Financial_20200115.txt
Member_Agilon_PGSEO_Locked_Financial_History_20200116.txt
Claims_PGSEO_History_20200116.txt
Member_Agilon_Current_QualityRA_20200215.txt
Member_Agilon_Locked_Financial_20191215.txt
COPC_ME_AETACOE6_201912_20200127.txt
SGPPN_PE20190701_REHCF.TXT
SGPPN_PE20200101_RECLMEXP.TXT
SGAGAKRN_PE20200301_RECLMEXP.TXT
PCMS_Inpatient_Admission_Patients_20190802100552.csv
PCMS_Inpatient_Admission_Patients_20190821154559.csv
Humana Dayton Census - Authorizations 4.30.20 Authorizations.csv
Humana Dayton Census - Authorizations 5.11.20.csv
Humana Dayton Census - Authorizations 4.30.20 Admits Discharges.csv
2020_05_04_Census.txt
2020_05_03_Discharges_Rolling7Days.txt
2020_05_04_Census.txt
2020_05_04_Discharges_Rolling7Days.txt
2019_12_21_Discharges_Rolling7Days.txt
2019_12_21_Census.txt
CHOC_RT_OutreachAttempt_20200502.csv
CHOC_RT_OutreachAttempt_20200509.csv
SGPPN_PE20200101_REMBX.TXT
PriMed_Phy_MAPPO_claim_det_02132020.txt
PriMed_Phy_MAPPO_claim_header_02132020.txt
PriMed_Phy_MAPPO_claim_header_proc_02132020.txt
PriMed_Phy_MAPPO_CLM_DIAG_02132020.txt
PriMed_Phy_MAPPO_member_02132020.txt
PriMed_Phy_MAPPO_member_eligibility_02132020.txt
OHCore_Care_Select_member_eligibility_01232020.txt
OHCore_Care_Select_member_eligibility_04152019.txt
OHCore_Care_Select_claim_det_07152019.txt
OHCore_Care_Select_claim_det_06182018.txt
OHCore_Care_Select_claim_det_01232020.txt
Pioneer_Phy_MAPPO_claim_det_02132020.txt
Pioneer_Phy_MAPPO_claim_header_02132020.txt
Pioneer_Phy_MAPPO_claim_header_proc_02132020.txt
Pioneer_Phy_MAPPO_CLM_DIAG_02132020.txt
Pioneer_Phy_MAPPO_member_02132020.txt
Pioneer_Phy_MAPPO_member_eligibility_02132020.txt
Physicians_Grp_Sohio_MAPPO_claim_det_02132020.txt
Physicians_Grp_Sohio_MAPPO_claim_header_02132020.txt
Physicians_Grp_Sohio_MAPPO_claim_header_proc_02132020.txt
Physicians_Grp_Sohio_MAPPO_CLM_DIAG_02132020.txt
Physicians_Grp_Sohio_MAPPO_member_02132020.txt
Physicians_Grp_Sohio_MAPPO_member_eligibility_02132020.txt
Central_Ohio_PC_MAPPO_claim_det_02132020.txt
Central_Ohio_PC_MAPPO_claim_header_02132020.txt
Central_Ohio_PC_MAPPO_CLM_DIAG_02132020.txt
Central_Ohio_PC_MAPPO_member_02132020.txt
Central_Ohio_PC_MAPPO_member_eligibility_02132020.txt
Central_Ohio_PC_MAPPO_claim_header_proc_02132020.txt
CORECARESELECT1OH_ENC_837P_20190927_529128
Copy of Pioneer_DailyAuth_SummaCare_20191227.csv
Copy of Pioneer_DailyAuth_SummaCare_20200329.csv
Copy of Pioneer_DailyAuth_SummaCare_20200414.csv
Copy of Pioneer_DailyAuth_SummaCare_20200402.csv
Pioneer_DailyAuth_SummaCare_20191227.csv
Pioneer_DailyAuth_SummaCare_20200329.csv
MG 11.22.19 HospitalListReport.csv
Humana COPC Census - Authorizations 3.26.20 Admits Discharges.csv
Humana COPC Census - Authorizations 13.6.20 Admits Discharges.csv
Humana COPC Census - Authorizations 3.26.20 Authorizations.csv
Humana COPC Census - Authorizations 11.01.20 Authorizations.csv
Humana COPC Census - Authorizations 2.2.20 Authorizations.csv
Humana Census - Admits Discharges 20200420.csv
^0420 file bad
Humana Census - Admits Discharges 20200416.csv
Humana Census - Authorizations 20200416.csv
"""#
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