import Foundation
let pattern = #"(PI~)([0-9]*)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
MSH|^~\&|EPIC|UMCG|||20180927143440||ADR^A19|18093|P|2.4|||||||||||
MSA|CA|20180927023440||
QRD|20180927|R|I|20180927|||1^RD|1414141|DEM
EVN|A19|20180927143440|||^^^^^^^^^^^^^||
PID|1||1414141^^^UMCG^PI~109819226||PROEFPERSOON&&PROEFPERSOON^J^X Y Z^^^^L^^^^NL1~PROEFPERSOON&&PROEFPERSOON^PIET^^^^^N^^^^NL1||19700101|M|PROEFPERSOON^PIET^^||PROEFLAAN 1C&PROEFLAAN&1C^^GRONINGEN^^9713GZ^NLD^L||050-1234567^P^PH^^^050^1234567~^NET^Internet^PIET@PROEFPERSOON.com~06-12345678^P^CP^^^06^12345678|06-87654321^P^PH^^^06^87654321|NEDERLANDS|||19764||||||Y||||||N||
ROL|1|UP|PP^Primary Care Provider|01001234^Huisarts^H^^^^^^Vektis^L|||||01^Huisartsen^Vektis||Straatweg 2&Straatweg&2^^Groningen^^9723AA^^O|050-3134102^WPN^PH~^NET^X.400^800013630
PV1|1|I|UG_V_A1VA^4^4-1^10^^^^^UMCG A1VA^^DEPID|NB||||||||||WOON|||||19764|CZ||||||||||||||||||||||||20180926143019||||||99996||||
AL1|1|SYSTEMISCH|^GEEN BEKENDE ALLERGIEEN^||||||
IN1|1||7119^^^UZOVI^PAYORID|CZ GROEP ZORGVERZEKERAAR UA (7119)|POSTBUS 4400&POSTBUS 4400&^^GOES^^4460CZ^||0113-274727^^^^^0113^274727|||||||||PROEFPERSOON^J^X Y Z.^^|Zelf|||Accepteren||1|||Ja||||||||||2552|ABC0123|||||||||||BEIDE||
IN2|||||Verzekeraar||||||||||||||||||||||||||||||||||||||||||||||||||||||||ABC0123|||||||||
L|1|UP|PP^Primary Care Provider|01001234^Huisarts^H^^^^^^Vektis^L|||||01^Huisartsen^Vektis||Straatweg 2&Straatweg&2^^Groningen^^9723AA^^O|050-3134102^WPN^PH~^NET^X.400^800013630
"""#
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