import Foundation
let pattern = #"(%Viptela)-([A-Za-z_0-9]*\-\d)-([A-Za-z_0-9]*)-(\d)-([A-Z]{4})-(\d*):"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
SYSMGR[318]: %Viptela-vmanage-1-sysmgrd-6-INFO-1400002: Notification: 5/14/2017 13:37:5 disk-usage severity-level: major host-name: "vmanage-1" system-ip:1.1.5.1 warning: "Disk usage is above 75%. Please clean up unnecessary files." total-mb: total-mb: 15970 free-mb:6343
SYSMGR[318]: %Viptela-vmanage-1-sysmgrd-6-INFO-1400002: Notification: 5/14/2017 13:14:36 memory-usage severity-level :major host-name: "vmanage-1" system-ip:1.1.5. 1
warning: "System memory usage is above 90% ( critically high)" total-mb:3905 free-mb:390
VDAEMON_0[422]: %Viptela-vsmart-1-vdaemon_0-6-INFO-1400002: Notification: 1/1/2017 14:15:36 security-certificate- expired severity-level:major host-name:" vsmart-1" system-ip:1.1.3.1
VDAEMON_0[422]: %Viptela-vsmart-1-vdaemon_0-6-INFO-1400002: Notification: 1/1/2017 13:22:1 control-connection-auth-fail severity-level:major host-name: "vsmart-1" system-ip:1.1.3.1 personality:vsmart peer-type:vsmart peer- system-ip:1.1.4.1 local-system-p:1.1.3.1 local-color:default reason: "ERR_CERT_VER_ FAIL
CHMGR[443]: %Viptela-vEdge44-1-chmgrd-6-INFO-1400002: Notification :
5/4/2017 12:56:1 tempsensor-state severity- level:major host-name: "vEdge44-1" system-ip:1 .1.44.1 hw-sensor-type:Board
hw-dev-index:0 name: "Board" temp:85 sensor-new -state:Yellow
FTM[597]: %Viptela-vEdge204-1-ftmd-6-INFO-1400002: Notification :
4/30/2017 5:37:4 interface-bw severity-level: major host-name: "vEdge204-1" system-ip:1.1. 204.1 vpn-id:0 if-name: "ge0/1"
if-cfg-bw-kbps:100000 traffic-direction: downstream duration:300
"""#
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