import Foundation
let pattern = #" ^ERROR\s\[(?<title>\w+:\d+.*)?"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
"Thrift:457] 2013-08-22 13:54:18,569 FailureDetector.java (line 150) unknown endpoint /17.164.241.92"
"Thrift:416] 2013-08-22 13:58:52,689 FailureDetector.java (line 150) unknown endpoint /17.164.241.92"
"Thrift:363] 2013-08-22 13:54:36,489 FailureDetector.java (line 150) unknown endpoint /17.164.241.92"
"Thrift:13] 2013-08-22 13:55:40,263 FailureDetector.java (line 150) unknown endpoint /17.164.241.92"
"OptionalTasks:1] 2013-08-22 13:54:23,932 AbstractCassandraDaemon.java (line 132) Exception in thread Thread[OptionalTasks:1,5,main]"
"MutationStage:87] 2013-08-22 13:59:40,582 AbstractCassandraDaemon.java (line 132) Exception in thread Thread[MutationStage:87,5,main]"
"MutationStage:71] 2013-08-22 13:24:28,812 AbstractCassandraDaemon.java (line 132) Exception in thread Thread[MutationStage:71,5,main]"
"MutationStage:6] 2013-08-22 13:21:59,901 AbstractCassandraDaemon.java (line 132) Exception in thread Thread[MutationStage:6,5,main]"
"MutationStage:43] 2013-08-22 13:24:25,239 AbstractCassandraDaemon.java (line 132) Exception in thread Thread[MutationStage:43,5,main]"
"MutationStage:36] 2013-08-22 13:33:39,235 AbstractCassandraDaemon.java (line 132) Exception in thread Thread[MutationStage:36,5,main]"
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
if let firstMatch = regex.firstMatch(in: testString, range: stringRange) {
let result: [String] = (1 ..< firstMatch.numberOfRanges).map { (testString as NSString).substring(with: firstMatch.range(at: $0)) }
print(result)
} else {
print("No matches were found.")
}
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