import Foundation
let pattern = #"(^[a-zA-Z._-]+)\(([0-9]+)\) : (error.*)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
.\include\intentionally_initally_empty.txt
1 File(s) copied
// Compiling galileo.sma ... Current time is: 15:26:16,93 - 11/09/2016
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team
galileo.sma(1026) : error 017: undefined symbol "nextmap_plugin_init"
galileo.sma(1032) : error 017: undefined symbol "register_dictionary_colored"
galileo.sma(1208) : error 017: undefined symbol "nomination_clearAll"
gali_leo.sma(1288) : error 017: undefined symbol "get_realplayersnum"
galileo.sma(1455) : error 017: undefined symbol "serverChangeLevel"
galileo.sma(1524) : error 017: undefined symbol "saveEndGameLimits"
gali-leo.sma(1558) : error 017: undefined symbol "map_getNext"
galileo.sma(1572) : error 017: undefined symbol "map_getNext"
galileo.sma(1620) : error 017: undefined symbol "saveCurrentMapCycleSetting"
galileo.sma(2294) : error 017: undefined symbol "cancelVoting"
galileo.sma(2312) : error 017: undefined symbol "cancelVoting"
galileo.sma(2389) : error 017: undefined symbol "map_getMinutesElapsedInteger"
galileo.sma(2389) : error 017: undefined symbol "saveEndGameLimits"
galileo.sma(2390) : error 017: undefined symbol "saveEndGameLimits"
galileo.sma(2391) : error 017: undefined symbol "saveEndGameLimits"
galileo.sma(2392) : error 017: undefined symbol "saveEndGameLimits"
galileo.sma(2942) : error 017: undefined symbol "get_realplayersnum"
galileo.sma(2954) : error 017: undefined symbol "get_realplayersnum"
galileo.sma(3062) : error 017: undefined symbol "get_realplayersnum"
galileo.sma(3169) : error 017: undefined symbol "map_isInMenu"
galileo.sma(3352) : error 017: undefined symbol "get_realplayersnum"
galileo.sma(3425) : error 017: undefined symbol "getPlayerNominationMapIndex"
galileo.sma(3471) : error 017: undefined symbol "get_realplayersnum"
galileo.sma(3545) : error 017: undefined symbol "color_print"
galileo.sma(3551) : error 017: undefined symbol "color_print"
galileo.sma(3627) : error 017: undefined symbol "color_print"
Compilation aborted.
26 Errors.
Could not locate output file compiled/galileo.amx (compile failed).
Took 0:00:01,54 seconds to run this script.
[Finished in 2.3s]
"""#
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