import Foundation
let pattern = #"(?!\b(sapkowski|wiedźmin|tomek|bagiński)\b)(([\u0100-\u017F])|(acz|acze|acza|aczy|aczowi|aczom|aczem|aczami|aczu|aczach|adam|adamy|adasz|adacie|ada|adali|adaliby|adajmy|adaj|adajcie|adany|adana|adane|adani|adano|adanie|ak|akowi|akom|akiem|akami|aku|akach|aki|alnia|alnie|alni|alniom|alniami|alniach|alnio|anin|anie|anina|aninowi|anom|aninem|anami|aninie|anach|anka|anki|anek|ankom|ankami|ankach|anko|arka|arki|arkowu|arkow|arkoma|arkam|arku|arkami|arkach|arek|arkom|arko|arnia|arnie|arni|arniom|arniami|arniach|arnio|arz|arze|arza|arzy|arzowi|arzom|arzem|arzami|arzu|arzach|aci|atego|atemu|atej|atych|atym|atymi|atych|awy|awe|awa|awi|awego|awemu|awej|awych|awym|awymi|cami|cach|cja|cje|cji|cyj|cjom|cje|cjami|cjach|cjo|cka|cki|ckie|ccy|ckiego|ckiemu|ckiej|ckich|ckim|ckimi|cku|cz|czyk|czycy|czyki|czyka|czykowi|czykom|czyka|czykiem|czykami|czyku|czykach|czyni|czynie|czyniom|czyniami|czyniach|czyzna|czyzny|czyzn|czyznom|czyznami|czyznach|czyzno|dziej|dzieje|dzieja|dziei|dziejowi|dziejom|dziejem|dziejami|dzieju|dziejach|ec|ek|ki|ka|kowi|kom|kiem|kami|ku|kach|elnia|elnie|elni|elniom|elniami|elniach|elnio|ica|icom|icami|icach|iczny|iczne|iczna|iczni|icznego|icznej|icznych|icznemu|icznym|icznymi|iec|ika|ikowi|ikom|ikiem|ikami|iku|ikach|iki|inie|inom|inami|inach|isko|iska|isek|isku|iskom|iskiem|iskami|iskach|izm|izmy|izmu|izmowi|izmom|izmem|izmami|izmie|izmach|jad|jady|jada|jadowi|jadom|jadem|jadami|jadzie|jadach|kolwiek|logie|logii|logiom|logiami|logiach|mierz|mierze|mierza|mierzy|mierzowi|mierzom|mierzem|mierzami|mierzu|mierzach|nica|nicy|nicom|nicami|nicach|nico|nie|nia|niu|niom|niem|niami|niach|nika|nikowi|nikom|nikiem|nikami|niku|nikach|niki|ninowi|ninem|ninie|nach|nego|nemu|nej|nych|nymi|odporny|odporne|odporna|odporni|odpornego|odpornemu|odpornej|odpornych|odpornym|odpornymi|olowi|olami|olach|ocie|otami|ocie|otach|owiec|owcy|owca|owcowi|owcom|owcem|owcami|owcu|owcach|owcze|owce|owy|owe|owa|owi|owego|owemu|owej|owych|owym|owymi|ów|owowi|owie|ówka|ówki|ówek|ówce|ówkom|ówkami|ówkach|ówko|pedie|pedii|pedyj|pediom|pediami|pediach|pedio|podobny|podobne|podobna|podobni|podobnego|podobnemu|podobnej|podobnych|podobnym|podobnymi|ska|skie|scy|skiego|skiej|skiemu|skich|skich|skimi|sku|stwo|stwa|stw|stwu|stwom|stwem|stwami|stwie|stwach|szczyzna|szczyzny|szczyzn|szczyznom|szczyznami|szczyznach|szczyzno|szy|sze|sza|szego|szemu|szej|szych|szym|szymi|unek|wód|wody|wodu|wodów|wodowi|wodom|wodem|wodami|wodzie|wodach|yca|yce|ycy|ycom|ycami|ycach|yco|yczny|yczne|yczna|yczni|ycznego|ycznemu|ycznej|ycznych|ycznym|ycznymi|ysko|yska|ysek|ysku|yskom|yskiem|yskami|ysku|yskach|ujemy|ujesz|ujecie|uje|ywali|ywaliby|ujmy|uj|ujcie|ywany|ywana|ywane|ywani|ywano|ywanie|zka|zki|zkie|zcy|zkiego|zkiemu|zkiej|zkich|zkim|zkich|zkimi|zku|znawstwo|znawstwa|znawstew|znawstwu|znawstwom|znawstwem|znawstwami|znawstwie|znawstwach)\b)+"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"sapkowski annie tomek polska wiedźmin iedźmin"#
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