import Foundation
let pattern = #"SQL: \[\d+\] (?<sql>.*) Sent SQL: \[\d+\] (?<send_sql>.*) Params:"#
let regex = try! NSRegularExpression(pattern: pattern, options: .dotMatchesLineSeparators)
let testString = #"""
SQL: [126] INSERT INTO `tbl_ip_data` (`ip_start`, `ip_end`, `region_id`, `country_id`, `create_at`)
VALUES (:v0d, :v1d, :v2d, :v3d, :v4d) Sent SQL: [163] INSERT INTO `tbl_ip_data` (`ip_start`, `ip_end`, `region_id`, `country_id`, `create_at`)
VALUES ('1900145563', '1900145563', '440118', 'CN', '2022-04-15 21:46:42') Params: 5 Key: Name: [4] :v0d paramno=-1 name=[4] ":v0d" is_param=1 param_type=2 Key: Name: [4] :v1d paramno=-1 name=[4] ":v1d" is_param=1 param_type=2 Key: Name: [4] :v2d paramno=-1 name=[4] ":v2d" is_param=1 param_type=2 Key: Name: [4] :v3d paramno=-1 name=[4] ":v3d" is_param=1 param_type=2 Key: Name: [4] :v4d paramno=-1 name=[4] ":v4d" is_param=1 param_type=2 [] []
"""#
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