import Foundation
let pattern = #"(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}) \[.*\] ERROR com.encima.project.h2y.handlers.XML.XMLBusinessComparator - \[Tx: (\d{8,12})\] Hotel id (\d*) : No weekends found for given hotel with the query criteria QueryData\(arrivaldate=(\d{4}-\d{2}-\d{2}), nbofnights=(\d), nbofadults=(\d), nbofchildren=(\d), agechildren=.{0,4}, nbofbabies=\d, agebabies=.{0,4}, nbofrooms=(\d), language=(\w{2}), affiliate=(\d{0,5}), hotelIds=.*"#
let regex = try! NSRegularExpression(pattern: pattern, options: .dotMatchesLineSeparators)
let testString = #"2016-06-22 00:00:15,759 [http-nio-8110-exec-12] ERROR com.encima.project.h2y.handlers.XML.XMLBusinessComparator - [Tx: 710117088] Hotel id 10500 : No weekends found for given hotel with the query criteria QueryData(arrivaldate=2016-09-05, nbofnights=6, nbofadults=2, nbofchildren=0, agechildren=null, nbofbabies=0, agebabies=null, nbofrooms=1, language=es, affiliate=4894, hotelIds=[10628, 12175, 9869, 12905, 11670, 10500, 10822, 12132, 6309, 12559])"#
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