import Foundation
let pattern = #"([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*)[:-]([0-9]*) ([-.0-9]*) ([-.0-9]*) ([-.0-9]*) (|[-0-9]*) (-|[-0-9]*) ([-0-9]*) ([-0-9]*) \"([^ ]*) (.*) (- |[^ ]*)\" \"([^\"]*)\" ([A-Z0-9-_]+) ([A-Za-z0-9.-]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^\"]*)\" ([-.0-9]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^ ]*)\" \"([^\s]+?)\" \"([^\s]+)\" \"([^ ]*)\" \"([^ ]*)\""#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"2023-03-05T23:00:35.803942Z download 46.20.32.146:37117 10.0.28.135:81 0.000034 0.030235 0.000039 200 200 0 12719 "GET https://download.cylance.com:443/updates/CylanceDetectUpdater/3.1.1000.48/Cylance.Host.Versions.dll?AWSAccessKeyId=ASIAXGEMKUZOLIJU7ANT&Expires=1678143581&response-cache-control=No-cache&x-amz-security-token=FwoGZXIvYXdzEF4aDKZOKkZNWIHzKxCTuSKCAc9SM0qqQ4Cyq5EN69MjRSP4KklVkfKe3l%2FP9auMBc0GcenWYD5MSbBSpabg%2FHhg8iz9KkEEkHtceAp1hIQE25i%2BZldQHjEIrHXyDJZKMh4SK2i7AUegHhrh0bOzAstDH9PRRqm%2FUWbLOm5X26NHcQtA%2FFVJSOl8T9CE%2BxxGOFwmR38ov%2BuToAYyKGAsGRb9noEAnd2jZZub%2B8kUU5ipH5u9%2Ff79%2BFuMSu4SOWaJ3utlz2Q%3D&Signature=pktaTIw8ucS5fcQYGq40zAge6JE%3D HTTP/1.1" "-" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2"#
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