import Foundation
let pattern = #"Vortag<\/td>.*?\n?.*?<td>(-?\d+\.?\d+)<"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
<div id="divInfo" class="cInfo">
<table border="0" cellspacing="0" cellpadding="0" width="100%" height="100%">
<tr>
<td align="center">
<table class="tablebody" border="0" width="100%">
<tr>
<td class="cNavInfo">Online-Werte » Wechselrichter-Übersicht</td>
</tr>
</table>
</td>
</tr>
<tr><td> </td></tr>
<tr>
<td class="tablebody">
<table width="100%" border="0">
<tr class="tablehead">
<td colspan="7"><strong>Summe aller Wechselrichter</strong></td>
</tr>
<tr>
<td class="tablehead">Bezeichnung</td>
<td class="tablehead">Wert</td>
<td class="tablehead">Einheit</td>
<td> </td>
<td class="tablehead">Bezeichnung</td>
<td class="tablehead">Wert</td>
<td class="tablehead">Einheit</td>
</tr>
<tr>
<td>Aktuelle Leistung</td>
<td><b>8.404</b></td>
<td>kW</td>
<td> </td>
<td>Aktuelle Monatsenergie</td>
<td>1750.106</td>
<td>kWh</td>
</tr>
<tr>
<td>Aktuelle Tagesenergie</td>
<td><b>15.328</b></td>
<td>kWh</td>
<td> </td>
<td>Aktuelle Jahresenergie</td>
<td>2352.722</td>
<td>kWh</td>
</tr>
<tr>
<td>Tagesenergie Vortag</td>
<td>148.736</td>
<td>kWh</td>
<td> </td>
<td>Gesamtenergie</td>
<td>235217.714</td>
<td>kWh</td>
</tr>
</table>
</td>
</tr>
<tr><td> </td></tr>
<tr>
<td>
<table width="100%" border="0" class="tablebody">
<tr class="tablehead">
<td colspan="5"><strong>Übersicht einzelner Wechselrichter</strong></td>
</tr>
<tr class="tablehead">
<td width="10%">Adresse</td>
<td width="10%">Leistung</td>
<td width="15%">Einheit</td>
<td width="10%">Tagesenergie</td>
<td width="55%">Einheit</td>
</tr>
<tr><td CLASS="cLink"><A HREF="/httpGpmGotoWrID.cgi?0">1</A></td><td>2505</td><td>W</td><td>4.536</td><td>kWh</td></tr><tr><td CLASS="cLink"><A HREF="/httpGpmGotoWrID.cgi?1">2</A></td><td>2552</td><td>W</td><td>4.880</td><td>kWh</td></tr><tr><td CLASS="cLink"><A HREF="/httpGpmGotoWrID.cgi?2">3</A></td><td>693</td><td>W</td><td>1.304</td><td>kWh</td></tr><tr><td CLASS="cLink"><A HREF="/httpGpmGotoWrID.cgi?3">4</A></td><td>2524</td><td>W</td><td>4.608</td><td>kWh</td></tr>
</table>
</td>
</tr>
<tr><td> </td></tr>
<tr><td align="center"> </td></tr>
<tr><td> </td></tr>
<tr><td align="center"> </td></tr>
<tr><td height="100%"> </td></tr>
<tr>
<td align="center">
<table width="100%" border="0" class="tablebody">
<tr>
<td>Anmerkung: Die hervorgehobenen Werte werden alle 20s aktualisiert.</td>
</tr>
</table>
</td>
</tr>
<tr><td> </td></tr>
<tr><td> </td></tr>
</table>
<div class="x-align-right">
<div class="cStatuszeile"> Systemzeit 10:35:57 / 24.02.2018 </div>
</div>
</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