import Foundation
let pattern = #"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
Return-path: <Walk-in.Whirlpool.Tubs@familywhitetubin.date>
Envelope-to: jblumberg@menshealthandwellness.org
Delivery-date: Mon, 31 Aug 2015 15:38:19 -0400
Received: from [50.2.8.182] (port=34151 helo=familywhitetubin.date)
by host.menshealthandwellness.org with esmtp (Exim 4.85)
(envelope-from <Walk-in.Whirlpool.Tubs@familywhitetubin.date>)
id 1ZWUuJ-0003hH-6L
for jblumberg@menshealthandwellness.org; Mon, 31 Aug 2015 15:38:19 -0400
Date: Mon, 31 Aug 2015 12:47:39 -0700
Message-ID: <77f581ddf9662409a9e27aaac2f26d74.14325456.20579279@familywhitetubin.date>
From: Walk-in.Whirlpool.Tubs <Walk-in.Whirlpool.Tubs@familywhitetubin.date>
To: <jblumberg@menshealthandwellness.org>
Dvhgo-Wu: 14325456i.20579279nr.o20579279
Content-Type: text/plain
Mime-Version: 1.0
Subject: Enjoy Safe, Comfortable Bathing in your Jacuzzi Walk-In-Bath, Quote: 14325456
Mi-Tdx: 77f581ddf9662409a9e27aaac2f26d74t-20579279br.d14325456
"""#
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