import Foundation
let pattern = #"\b(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]))|\:(\d*)\b"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
<http>1.0.170.50:80</http>
<http>1.1.189.58:8080</http>
<http>1.1.220.100:8080</http>
<http>1.2.252.65:8080</http>
<http>1.20.166.142:8080</http>
<http>1.32.59.217:47045</http>
<http>1.179.136.98:8080</http>
<http>1.179.144.41:8080</http>
<http>1.179.148.9:36476</http>
<http>1.186.85.38:1111</http>
<http>3.20.236.208:49205</http>
<http>3.215.177.148:49205</http>
<http>5.16.0.97:1256</http>
<http>5.16.0.174:8080</http>
<http>5.16.0.180:8080</http>
<http>5.16.1.17:8080</http>
<http>5.22.196.30:8080</http>
<http>5.44.62.166:8080</http>
<http>5.58.33.187:55507</http>
<http>5.59.145.129:8080</http>
<http>5.135.176.161:10000</http>
<http>5.153.234.91:3128</http>
<http>5.180.130.90:80</http>
<http>5.180.130.91:8080</http>
<http>5.188.136.52:8080</http>
<http>5.202.191.226:80</http>
<http>8.242.207.202:8080</http>
<http>12.88.29.66:9080</http>
<http>12.144.254.185:9080</http>
<http>12.218.209.130:13326</http>
<http>14.102.13.161:8080</http>
"""#
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