import Foundation
let pattern = #"^(.+ESTABLISHED[\s\S]+?={3}.+?)$"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
Security Associations (2 up, 0 connecting):
IPSec-IKEv2[2]: ESTABLISHED 10 seconds ago, 5.79.70.34[a.teletom.ru]...91.77.160.189[192.168.1.64]
IPSec-IKEv2[2]: Remote EAP identity: mac
IPSec-IKEv2[2]: IKEv2 SPIs: 8e03bee2f90a7b0f_i 2b840459b2a53517_r*, rekeying disabled
IPSec-IKEv2[2]: IKE proposal: AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
IPSec-IKEv2{2}: INSTALLED, TUNNEL, reqid 2, ESP in UDP SPIs: ca7323ca_i 0dd681eb_o
IPSec-IKEv2{2}: AES_CBC_128/HMAC_SHA1_96, 63234 bytes_i (390 pkts, 0s ago), 113714 bytes_o (345 pkts, 0s ago), rekeying disabled
IPSec-IKEv2{2}: 0.0.0.0/0 === 10.101.0.2/32
IPSec-IKEv2[1]: ESTABLISHED 8 minutes ago, 5.79.70.34[a.teletom.ru]...91.77.160.189[hon]
IPSec-IKEv2[1]: IKEv2 SPIs: 0fa1c950bdb21ac0_i 0bcd0f3b2bea4cea_r*, rekeying disabled
IPSec-IKEv2[1]: IKE proposal: AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/ECP_256
IPSec-IKEv2{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: cb680131_i 69774a81_o
IPSec-IKEv2{1}: AES_GCM_16_128, 86593 bytes_i (454 pkts, 11s ago), 249805 bytes_o (510 pkts, 11s ago), rekeying disabled
IPSec-IKEv2{1}: 0.0.0.0/0 === 10.101.0.1/32
"""#
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