import Foundation
let pattern = #"\s\S.*?\s"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
HK407_02g03400 NP_585950.1 74.539 271 68 1 14 284 1 270 4.68e-143 401
HK407_02g03530 NP_585964.1 86.989 269 35 0 1 269 1 269 0.0 495
HK407_02g03640 NP_585974.1 70.940 117 34 0 5 121 4 120 1.19e-57 171
HK407_02g03700 NP_585980.1 67.722 316 100 2 1 315 1 315 1.31e-164 457
HK407_02g04000 NP_584634.1 73.521 676 174 3 1 671 1 676 0.0 1060
HK407_02g04120 NP_584647.1 68.313 587 185 1 41 626 2 588 0.0 856
HK407_02g04310 NP_584665.1 88.753 409 45 1 1 409 1 408 0.0 759
HK407_02g04360 NP_584670.1 74.351 308 79 0 1 308 1 308 8.75e-168 464
"""#
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