import Foundation
let pattern = #"^([^,]*,){39}""#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
,1414,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"kepware~5~63CC97F2-5494-43F2-9F92-79A2BEF58D2A","5:39265338",,1473800029,"2016-09-13 20:54:20.206 +0000 Tag=""MODBUS.ROBOT.Position_Base"" Value=""1414"" Quality=""good"" ","RS5c
kepware",Kepware,".206","1473800060.206",,,20,13,54,september,20,tuesday,2016,0,,,"24.97.250.66",kepware,1,,,"--_::._+_=""..""_=""""_=""""_",,Kepware,Kepware,RS5c,,,,,,29,0,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"1487.42566",,"kepware~5~63CC97F2-5494-43F2-9F92-79A2BEF58D2A","5:39143140",,1473798904,"2016-09-13 20:35:35.147 +0000 Tag=""OmronCJ.PLC1.Suply_conv.Belt_speed"" Value=""1487.42566"" Quality=""good"" ","RS5c
kepware",Kepware,".147","1473798935.147",,,20,13,35,september,35,tuesday,2016,0,,,"24.97.250.66",kepware,1,,,"--_::._+_=""...""_="".""_=""""_",,Kepware,Kepware,RS5c,,,,,,29,0,,
,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,"kepware~5~63CC97F2-5494-43F2-9F92-79A2BEF58D2A","5:39117933",,1473798672,"2016-09-13 20:31:42.457 +0000 Tag=""MODBUS.ROBOT.Velocity_Sholder"" Value=""0"" Quality=""good"" ","RS5cSplunk1
kepware",Kepware,".457","1473798702.457",,,20,13,31,september,42,tuesday,2016,0,,,"24.97.250.66",kepware,1,,,"--_::._+_=""..""_=""""_=""""_",,Kepware,Kepware,RS5c,,,,,,29,0,,
,,,,,,,,,,,,,,,,,,,,,,,,,"1491.82166",,,,,,,,,,"kepware~5~63CC97F2-5494-43F2-9F92-79A2BEF58D2A","5:39105700",,1473798560,"2016-09-13 20:29:50.387 +0000 Tag=""OmronCJ.PLC1.Assy_conv.belt_speed"" Value=""1491.82166"" Quality=""good"" ","RS5c
kepware",Kepware,".387","1473798590.387",,,20,13,29,september,50,tuesday,2016,0,,,"24.97.250.66",kepware,1,,,"--_::._+_=""...""_="".""_=""""_",,Kepware,Kepware,RS5c,,,,,,29,0,,
,,,,,,,,,,,,,,,,,,,,1605,,,,,,,,,,,,,,,"kepware~5~63CC97F2-5494-43F2-9F92-79A2BEF58D2A","5:39087971",,1473798396,"2016-09-13 20:27:06.649 +0000 Tag=""MODBUS.ROBOT.Velocity_Max_Wrst3"" Value=""1605"" Quality=""good"" ","RS5c
"""#
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