import Foundation
let pattern = #"(?:PM10<\/td><td class='r'>)(\d+.\d)"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = ##"<html><head><title>Aktuelle Werte</title><meta name='viewport' content='width=device-width'><style type='text/css'>body{font-family:Arial;margin:0}.content{margin:10px}.r{text-align:right}td{vertical-align:top;}a{text-decoration:none;padding:10px;background:#38b5ad;color:white;display:block;width:auto;border-radius:5px;}input[type='text']{width:100%;}input[type='password']{width:100%;}input[type='submit']{border-radius:5px;font-size:medium;padding:5px;}.submit_green{padding:9px !important;width:100%;border-style:none;background:#38b5ad;color:white;text-align:left;}</style></head><body><div style='min-height:120px;background-color:#38b5ad;margin-bottom:20px'> <a href='/' style='background:none;width:0;display:inline'><img src='/images?name=luftdaten_logo' style='float:left;margin:20px'/></a> <h3 style='margin:0'>Feinstaubsensor</h3> <small>ID: 2221799<br/>MAC: A0:20:A6:21:E6:XX<br/>Firmware: NRZ-2017-092</small></div><div class='content'><h4>Übersicht » Aktuelle Werte</h4><table cellspacing='0' border='1' cellpadding='5'><tr><th>Sensor</th><th>Parameter</th><th>Wert</th><tr><td colspan='3'> </td></tr><tr><td>SDS011</td><td>PM2.5</td><td class='r'>6.6 µg/m³</td></tr><tr><td>SDS011</td><td>PM10</td><td class='r'>14.6 µg/m³</td></tr><tr><td colspan='3'> </td></tr><tr><td>DHT22</td><td>Temperatur</td><td class='r'>22.0 °C</td></tr><tr><td>DHT22</td><td>rel. Luftfeuchte</td><td class='r'>59.0 %</td></tr><tr><td colspan='3'> </td></tr><tr><td>WiFi</td><td>Signal</td><td class='r'>-62 dBm</td></tr><tr><td>WiFi</td><td>Qualität</td><td class='r'>76 %</td></tr></table><br/><br/><a href='/' style='display:inline;'>Zurück zur Startseite</a><br/><br/><br/><a href='http://codefor.de/' target='_blank' style='display:inline;background:none;width:0px;'><img src='/images?name=cfg_logo' style='width:200px;max-width:50%;'/></a></div></body></html>"##
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