import Foundation
let pattern = #"X-Gmail-Labels\s*:\s*(?P<X_Gmail_Labels>[\w]+,[\w]+)[\r|\n|\S|\s]+Delivered-To\s*:\s*(?P<delivered_to>[\S]+)[\r|\n|\S|\s]+Subject\s*:\s*(?P<subject>.+)[\r|\n|\S|\s]+From\s*:\s*(?P<from>[^>]+>)"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
From 1488780641874111180@xxx Mon Dec 29 12:11:00 2014
X-GM-THRID: 1488780145305309925 X-Gmail-Labels: Sent,Important
MIME-Version: 1.0 Received: by 10.52.29.70 with HTTP; Sun, 28 Dec 2014 16:11:00 -0800 (PST)
X-Originating-IP: [82.13.144.221]
In-Reply-To: <01ff42fddfded95cfa8b14fa5559b0fb.squirrel@webmail04.register.com>
References: <01ff42fddfded95cfa8b14fa5559b0fb.squirrel@webmail04.register.com>
Date: Mon, 29 Dec 2014 00:11:00 +0000
Delivered-To: hello@domain.co Message-ID: <CAN8wjQQWm33RS-hDdE1k3c6CMOge9-eq=3GrcNssV8gPYi+osA@mail.gmail.com>
Subject: Re: test subject: added - 1 From: DG <hello@domain.co> To: info@otherdomain.us
Content-Type: multipart/alternative; boundary=001a11c2183a9b3b4e050b4fb549
--001a11c2183a9b3b4e050b4fb549
Content-Type: text/plain; charset=UTF-8
Hey Chris,
Is that price for the pass with tax?
Also do you have any recommendations for good rental places in town?
Cheers,
-dave
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
if let firstMatch = regex.firstMatch(in: testString, range: stringRange) {
let result: [String] = (1 ..< firstMatch.numberOfRanges).map { (testString as NSString).substring(with: firstMatch.range(at: $0)) }
print(result)
} else {
print("No matches were found.")
}
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