import Foundation
let pattern = #"(?:To:|(?!^)\G).*?<([^>]*)>(?=.*Message-ID)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .dotMatchesLineSeparators)
let testString = #"""
Content-Type: application/ms-tnef; name="winmail.dat"
Content-Transfer-Encoding: binary
From: ABC aa DDD <aaaa.b@abc.com>
To: DDDDD dd <sssss.r@abc.com>
CC: Rrrrr rrede <sssss.rv@abc.com>, Dsssssf V R
<dsdsdsds.vr@abc.com>, Psssss A <pssss.a@abc.com>, Logistics
<LOGISTICS@abc.com>, Gssss Bsss P <gdfddd.p@abc.com>
Subject: RE: [MyApps] (PRO-34604) PR for Additional Monitor allocation [CITS
Ticket:258849]
Thread-Topic: [MyApps] (PRO-34604) PR for Additional Monitor allocation
[CITS Ticket:258849]
Thread-Index: AQHRXMJHE6KqCFxKBEieNqGhdNy7Pp8XHc0A
Date: Mon, 1 Feb 2016 17:56:17 +0530
Message-ID: <B7F84439E634A44AB586E3FF2EA0033A29E27E47@JETWINSRVRPS01.abc.com>
References: <JA.101.1453963700000@myapps.abc.com>
<JA.101.1453963700000.978.1454311765375@myapps.abc.com>
In-Reply-To: <JIRA.450101.1453963700000.978.1454311765375@myapps.abc.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-Exchange-Organization-SCL: -1
X-MS-TNEF-Correlator: <B7F84439E634A44AB586E3FF2EA0033A29E27E47@JETWINSRVRPS01.abc.com>
MIME-Version: 1.0
X-MS-Exchange-Organization-AuthSource: TURWINSRVRPS01.abc.com
X-MS-Exchange-Organization-AuthAs: Internal
X-MS-Exchange-Organization-AuthMechanism: 04
X-Originating-IP: [1.1.1.7]
"""#
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