import Foundation
let pattern = #"(Trotzdem\s*?(?:<\/?[^>]*?>)?\s*?gibt\s*?(?:<\/?[^>]*?>)?\s*?es\s*?(?:<\/?[^>]*?>)?\s*?Untersuchungen,\s*?(?:<\/?[^>]*?>)?\s*?die\s*?(?:<\/?[^>]*?>)?\s*?nahelegen,\s*?(?:<\/?[^>]*?>)?\s*?dass\s*?(?:<\/?[^>]*?>)?\s*?bis\s*?(?:<\/?[^>]*?>)?\s*?zu\s*?(?:<\/?[^>]*?>)?\s*?20%\s*?(?:<\/?[^>]*?>)?\s*?der\s*?(?:<\/?[^>]*?>)?\s*?Studierenden\s*?(?:<\/?[^>]*?>)?\s*?in\s*?(?:<\/?[^>]*?>)?\s*?Deutschland\s*?(?:<\/?[^>]*?>)?\s*?während\s*?(?:<\/?[^>]*?>)?\s*?der\s*?(?:<\/?[^>]*?>)?\s*?Prüfungsvorbereitung\s*?(?:<\/?[^>]*?>)?\s*?Ritalin\s*?(?:<\/?[^>]*?>)?\s*?einschmeissen\s*?(?:<\/?[^>]*?>)?\s*?\[2\],\s*?(?:<\/?[^>]*?>)?\s*?Reportagen,\s*?(?:<\/?[^>]*?>)?\s*?dass\s*?(?:<\/?[^>]*?>)?\s*?britische\s*?(?:<\/?[^>]*?>)?\s*?Studierende\s*?(?:<\/?[^>]*?>)?\s*?Modafinil\s*?(?:<\/?[^>]*?>)?\s*?bestens\s*?(?:<\/?[^>]*?>)?\s*?kennen\[3\]\s*?(?:<\/?[^>]*?>)?\s*?und\s*?(?:<\/?[^>]*?>)?\s*?Studierende\s*?(?:<\/?[^>]*?>)?\s*?weltweit\s*?(?:<\/?[^>]*?>)?\s*?auch\s*?(?:<\/?[^>]*?>)?\s*?nach\s*?(?:<\/?[^>]*?>)?\s*?der\s*?(?:<\/?[^>]*?>)?\s*?Silk\s*?(?:<\/?[^>]*?>)?\s*?Road — einem\s*?(?:<\/?[^>]*?>)?\s*?mittlerweile\s*?(?:<\/?[^>]*?>)?\s*?eingestellten\s*?(?:<\/?[^>]*?>)?\s*?Schwarzmarkt\s*?(?:<\/?[^>]*?>)?\s*?im\s*?(?:<\/?[^>]*?>)?\s*?Deep\s*?(?:<\/?[^>]*?>)?\s*?Web – mit\s*?(?:<\/?[^>]*?>)?\s*?illegalen\s*?(?:<\/?[^>]*?>)?\s*?„Nootropics“\s*?(?:<\/?[^>]*?>)?\s*?experimentieren\.)"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = ##"<p>Die <span class="caps">GDS</span> zeichnet also das Bild einer Gesellschaft, in der Drogen primär Rausch, Genuss und Spass sind. Tabak ist zwar das bekannteste – und ungesündeste – Mittel gegen Stress, aber sonst sind die Leistungssteigerer in der Liste weit abgeschlagen. Trotzdem gibt es Untersuchungen, die nahelegen, dass bis zu 20% der Studierenden in Deutschland während der Prüfungsvorbereitung Ritalin einschmeissen <a href="#_ftn2" name="_ftnref2">[2]</a>, Reportagen, dass britische Studierende Modafinil bestens kennen<a href="#_ftn3" name="_ftnref3">[3]</a> und Studierende weltweit auch nach der <a href="https://de.wikipedia.org/wiki/Silk_Road" target="_blank">Silk Road</a> — einem mittlerweile eingestellten Schwarzmarkt im Deep Web – mit illegalen „Nootropics“ experimentieren.</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