import Foundation
let pattern = #"(by ).*(with)"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
from s32.hekko.net.com
by s32.hekko.net.com with LMTP id 0KRkJkxRu1qDS1AAbRxtZA
for <john@gmail.com>; Wed, 28 Mar 2018 10:24:44 +0200
Return-path: <johnsfather@onet.com>
Envelope-to: john@gmail.com
Delivery-date: Wed, 28 Mar 2018 10:24:44 +0200
from smtpo114.poczta.onet.com ([213.180.149.147])
by s32.hekko.net.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256)
(Exim 4.90_1)
(envelope-from <johnsfather@onet.com>)
id 1f16Nv-00057D-Sj
for john@gmail.com; Wed, 28 Mar 2018 10:24:44 +0200
from pmq4v.m5r2.onet (pmq4v.m5r2.onet [30.174.32.60])
by smtp.poczta.onet.com (Onet) with ESMTP id 40B2Bw16y9zqtBg4
for <john@gmail.com>; Wed, 28 Mar 2018 10:24:40 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=onet.com; s=2011;
t=1522235480; bh=6YEU3a1jv48GQ33zI1zre2Sf05w2DqLyMQhJ7UmYfyM=;
h=From:To:Date:Subject:From;
b=svf7rTDJFp7gUMQFA6GShG07bYFIpsSaxPOvdXYad/2ln6x+BGE4z4OoIfqBgpGhE
2n43jucpTRvw7mdT33vor7NXnI6mMXjLZjJp6J4cOpxGLnuAnSEo0G/xLWirIgFmm4
TojYv7tx5z/PugqZc/c59WzApn14FEhmVSrC+1IE=
Content-Type: multipart/alternative; boundary="===============2073168411=="
MIME-Version: 1.0
from [37.47.10.237] by pma4v.m5r2.onet via HTTP id
201803281024458192010001; Wed, 28 Mar 2018 10:24:40 +0200
"""#
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