import Foundation
let pattern = #"\[?(?<time>20\d\d-\d\d-\d\d\s*\d\d:\d\d:\d\d(?:\,|\.)\d+)\[?"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
Apr 19 09:21:12 XYZADMXYZAB3P04 XYZADMXYZAB3P04 [customer] [426426|TaskExecutor-master-426426-ProcessTask [8797404726198]] [2018-04-19 09:21:11,929] [not present] [admin] [true]: Customer [aubcdsatest@google.com] is created/updated
Apr 25 15:00:44 XYZADMXYZAB3P04 XYZADMXYZAB3P04 [customer] [139468|TaskExecutor-master-139468-ProcessTask [8797864231862]] [2018-04-25 15:00:41,004] [not present] [admin] [true]: Customer [m.abcsree40@gmail.com] is created/updated
Apr 4 09:52:28 XYZECMXYZAB1P43 XYZECMXYZAB1P43 [customer] [103920|ajp-bio-8010-exec-158] [2018-04-04 09:52:21,843] [192.145.12.4] [line.sssss@icloud.com] [true]: Customer [lint.sre@icloud.com] is created/updated
Apr 4 09:52:28 XYZECMXYZAB1P43 XYZECMXYZAB1P43 [authentication] [103920|ajp-bio-8010-exec-158] [2018-04-04 09:52:21,876] [192.145.12.4] [abcd.sssss@icloud.com] [true]: user [abcd.ssss@icloud.com] successfully authenticated
Apr 9 12:41:52 XYZBUSXYZAB3P01 XYZBUSXYZAB3P01 [employee] [200061|hybrisHTTP8] [2018-04-09 12:41:48,609] [10.44.189.72] [anonymous] [true]: Employee [tester] is created/updated
Apr 21 02:55:46 ABCPUBXYZAB56 ABCPUBXYZAB56 2018-04-21 02:55:39.800 INFO [com.xyxf.auth.core.XYLoginHookAuthenticationHandler] Activated XYZ authentication feedback handler wrap handler enabled is true
Apr 12 08:23:06 ABCPUBXYZAB47 ABCPUBXYZAB47 2018-04-12 08:23:00.401 INFO [com.xyzf.auth.core.XYLoginHookAuthenticationHandler] 10.66.101.22 admin failed
"""#
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