import Foundation
let pattern = #"\$([a-z]\w*)\s*=\s*(.*?);$"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
<?PHP
$html_title='F1-ClipTip - pipety automatyczne o stałej pojemności';
$html_keywords='finnpipette, pipeta automatyczna, pipeta, dozowanie cieczy, stała pojemność';
$html_description='Najbardziej zaawansowane pipety automatyczne z rodziny Thermo Scientific Finnpipette o stałej pojemności dozowanej cieczy.';
$prod_breadcrumbs='<a href="widok/oferta">Oferta</a> >> <a href="widok/ka-dozowanie-cieczy">Dozowanie cieczy</a> >> <a href="widok/ka-pipety-automatyczne">Pipety automatyczne</a> >> <a href="widok/ka-finnpipette-cliptip">Seria F1-ClipTip</a> >> stała pojemność';
$prod_heading='<h1>F1-ClipTip - pipety automatyczne o stałej pojemności</h1>';
$prod_description='<p>Pipety Thermo Scientific F1-ClipTip o stałej pojemności odmieniają jakość codziennego pipetowania poprzez wprowadzenie innowacyjnej technologii blokowania ClipTip, która zapewnia całkowitą szczelność na każdym kanale.</p>
<p>Osiągnij nowy poziom pewności działania wiedząc, że końcówki są mocno osadzone na stożku pipety i nigdy nie poluzują się, ani nie spadną niezależnie od siły nacisku przy dozowaniu. Innowacyjna konstrukcja trzech zatrzasków zapewnia prawidłowe osadzenie końcówek na pipetach F1-ClipTip do czasu ich zwolnienia przez wyrzutnik.</p>
<br><p><iframe width="640" height="360" src="http://www.youtube.com/embed/7Od5V0RQtW4?feature=player_detailpage" frameborder="0" allowfullscreen></iframe></p><br>';
$prod_details='<p>Poczujesz różnicę już za pierwszym razem, gdy tylko weźmiesz do ręki nową serię F1-ClipTip</p>
<ul class="bullet">
<li><h3>Końcówka jest zablokowana i szczelnie osadzona na stożku pipety do momentu jej zdjęcia</h3> - bez odpadających końcówek, które marnują cenne próbki lub odczynniki.</li>
<li><h3>Całkowicie szczelne połączenie na każdym kanale</h3> - zwiększa dokładność i precyzję.</li>
<li><h3>Wyeliminowany problem luźnych końcówek</h3> - pozwala osiągnąć lepsze rezultaty podczas długotrwałego pipetowania.</li>
<li><h3>Wyjątkowa powtarzalność wyników pipetowania</h3></li>
<li><h3>Ergonomiczna konstrukcja:</h3> niskie siły nakładania, odrzucania końcówek i lekka praca pipety zwiększają bezpieczeństwo i komfort</li>
<li><h3>Niezwykle lekka:</h3> nowoczesna konstrukcja chroni użytkownika przed chronicznym przeciążeniem mięśni</li>
<li><h3>Nastawny uchwyt:</h3> uchwyt regulowany w zakresie 120° zapewnia komfort pracy użytkownikom prawo i leworęcznym - umożliwia rozluźnienie dłoni w trakcie cyklu pipetowania</li>
<li><h3>Opatentowany wyrzutnik soft-touch: </h3>innowacyjny mechanizm wyrzutnika pozwala uzyskać zwiększoną siłę nacisku na końcówki, umożliwiając ich odrzucenie bez wysiłku</li>
<li><h3>Opatentowany system blow-out: </h3>150% zwiększone wydmuchiwanie powietrza zapewnia prawidłowe pipetowanie mikroobjętości i zapobiega zjawisku kapilarnemu (w pipetach o objętości poniżej 50 μl)</li>
<li><h3>Zabezpieczenie nastawionej objętości: </h3>zabezpieczenie eliminuje przypadkowe przestawienie objętości roboczej podczas pipetowania.</li>
<li><h3>Oznaczenie CE: </h3>system pipetowania F1-ClipTip jest oznaczony znakiem CE i jest zgodny z dyrektywa IVD.</li>
<p>Gwarancja na pipety serii F1-ClipTip wynosi 12 miesięcy. Okres gwarancyjny wydłużany jest bezpłatnie do 5 lat po rejestracji na stronie producenta.</p>
</ul>';
/*$prod_cat_numbers='<table width="350" summary="Numery katalogowe pipet Thermo Scientific Novus jednokanałowych">
<tr>
<th scope="col">Nr. kat</th>
<th scope="col">Opis</th>
</tr>
<tr>
<td>4651000</td>
<td>1 µl</td>
</tr>
<tr>
<td>4651010</td>
<td>5 µl</td>
</tr>
<tr>
<td>4651020</td>
<td>10 µl</td>
</tr>
<tr>
<td>4651130</td>
<td>25 µl</td>
</tr>
<tr>
<td>4651030</td>
<td>25 µl</td>
</tr>
<tr>
<td>4651040</td>
<td>50 µl</td>
</tr>
<tr>
<td>4651050</td>
<td>100 µl</td>
</tr>
<tr>
<td>4651140</td>
<td>200 µl</td>
</tr>
<tr>
<td>4651060</td>
<td>250 µl</td>
</tr>
<tr>
<td>4651070</td>
<td>500 µl</td>
</tr>
<tr>
<td>4651080</td>
<td>1000 µl</td>
</tr>
<tr>
<td>4651090</td>
<td>2000 µl</td>
</tr>
<tr>
<td>4651100</td>
<td>3000 µl</td>
</tr>
<tr>
<td>4651110</td>
<td>5000 µl</td>
</tr>
<tr>
<td>4651120</td>
<td>10000 µl</td>
</tr>
</table>
4651170 1µL 4% 4% ClipTip 20
4651180 5µL 1.4% 1.4% ClipTip 20
4651190 10µL 0.9% 0.8% ClipTip 20
4651200 20µL 0.7% 0.5% ClipTip 20
4651210 25µL 0.6% 0.5% ClipTip 50
4651220 50µL 0.6% 0.4% ClipTip 50
4651230 100µL 0.4% 0.3% ClipTip 200
4651240 200µL 0.4% 0.3% ClipTip 200
4651250 250µL 0.4% 0.3% ClipTip 300
4651260 500µL 0.3% 0.3% ClipTip 1000
4651270 1000µL 0.3% 0.3% ClipTip 1000
';*/
$prod_specs='<table width="600" summary="Specyfikacje pipet Thermo Scientific Finnpipette F1ClipTip jednokanałowych">
<tr>
<th scope="col">Nr. kat</th>
<th scope="col">Pojemność</th>
<th scope="col">Dokładność %</th>
<th scope="col">Precyzja CV%</th>
<th scope="col">Końcówka</th>
</tr>
<tr>
<td>4651170</td>
<td>1 µl</td>
<td>± 4,0</td>
<td>4,0</td>
<td>ClipTip 20</td>
</tr>
<tr>
<td>4651180</td>
<td>5 µl</td>
<td>± 1,4</td>
<td>1,4</td>
<td>ClipTip 20</td>
</tr>
<tr>
<td>4651190</td>
<td>10 µl</td>
<td>± 0,9</td>
<td>0,8</td>
<td>ClipTip 20</td>
</tr>
<tr>
<td>4651200</td>
<td>20 µl</td>
<td>± 0,7</td>
<td>0,5</td>
<td>ClipTip 20</td>
</tr>
<tr>
<td>4651210</td>
<td>25 µl</td>
<td>± 0,6</td>
<td>0,5</td>
<td>ClipTip 50</td>
</tr>
<tr>
<td>4651220</td>
<td>50 µl</td>
<td>± 0,6</td>
<td>0,4</td>
<td>ClipTip 50</td>
</tr>
<tr>
<td>4651230</td>
<td>100 µl</td>
<td>± 0,4</td>
<td>0,3</td>
<td>ClipTip 200</td>
</tr>
<tr>
<td>4651240</td>
<td>200 µl</td>
<td>± 0,4</td>
<td>0,3</td>
<td>ClipTip 200</td>
</tr>
<tr>
<td>4651250</td>
<td>250 µl</td>
<td>± 0,4</td>
<td>0,3</td>
<td>ClipTip 300</td>
</tr>
<tr>
<td>4651260</td>
<td>500 µl</td>
<td>± 0,3</td>
<td>0,3</td>
<td>ClipTip 1000</td>
</tr>
<tr>
<td>4651270</td>
<td>1000 µl</td>
<td>± 0,3</td>
<td>0,3</td>
<td>ClipTip 1000</td>
</tr>
</table>';
$prod_related='<p>
<a href="widok/TS-Finnpipette-F-statyw">Statyw do pipet Finnpipette Serii F1 i F2</a>
</p>
';
$prod_docs='
<p><a href="downloads/PL-Finnpipette F1-ClipTip.pdf"><img src="downloads/PL-Finnpipette F1-ClipTip.jpg" width="113" height="150" alt="Okładka ulotki pipet Thermo Scientific Finnpipette F1 ClipTip" longdesc="Okładka ulotki pipet Thermo Scientific Finnpipette F1 ClipTip w formacie pdf"><br>Ulotka polska F1-ClipTip</a></p>
<p><a href="downloads/F1ClipF1-ClipTip_Pipette.pdf"><img src="downloads/F1ClipF1-ClipTip_Pipette.jpg" width="113" height="150" alt="Okładka ulotki Thermo Scientific
F1-ClipTip Pipette" longdesc="Okładka ulotki Thermo Scientific F1-ClipTip Pipette w formacie pdf"><br>Ulotka Thermo Scientific F1-ClipTip Pipette</a></p>
<p><a href="downloads/ts-poradnik-pipetowania.pdf"><img src="downloads/ts-poradnik-pipetowania-1.png" width="106" height="150" alt="Okładka poradnika pipetowania" longdesc="Okładka poradnika pipetowania w formacie pdf"><br> Poradnik pipetowania</a></p>';
"""#
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