import Foundation
let pattern = #"^Description\h*:\h*vusb0/iDRAC\h*Network/.*(?:.*\R)+?IPv4 Address\h+:\h*(\d{1,3}(?:\.\d{1,3}){3})"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
lo0
Description : lo0
Status : Up
Interface Type : Loopback
DHCP : Disabled
MAC Address : 30-03-27-E3-3B-03
FQDD : Not Applicable
IPv4 Address : 127.0.0.1
Subnet Mask : 255.0.0.0
vmk0
Description : vmnic0/Management Network/vmk0
Status : Up
Interface Type : Ethernet
DHCP : Enabled
DHCPServerV4 : 100.98.65.10
MAC Address : 50-9A-4C-9C-99-8D
FQDD : NIC.Embedded.1-1-1
IPv4 Address : 100.98.68.239
Subnet Mask : 255.255.252.0
IPv6 Address : fe80::529a:4cff:fe9c:998d
Prefix Length : 64
IPv4 Gateway Address : 100.98.68.1
IPv4 DNSServer Address 0: 10.7.7.7
IPv4 DNSServer Address 1: 10.8.8.8
vmk1
Description : vusb0/iDRAC Network/vmk1
Status : Up
Interface Type : Ethernet
DHCP : Disabled
MAC Address : 00-50-56-6E-6F-99
FQDD : Not Applicable
IPv4 Address : 169.254.10.12
Subnet Mask : 255.255.255.0
IPv6 Address : fe80::250:56ff:fe6e:6f99
Prefix Length : 64
IPv4 DNSServer Address 0: 10.7.7.7
IPv4 DNSServer Address 1: 10.8.8.8
vmk2
Description : vmnic1/iDRAC Network/vmk2
Status : Up
Interface Type : Ethernet
DHCP : Disabled
MAC Address : 00-50-56-6E-6F-99
FQDD : Not Applicable
IPv4 Address : 169.254.3.1
Subnet Mask : 255.255.255.0
IPv6 Address : fe80::250:56ff:fe6e:6f99
Prefix Length : 64
IPv4 DNSServer Address 0: 10.7.8.9
IPv4 DNSServer Address 1: 10.3.2.1
racadm>>
"""#
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