import Foundation
let pattern = #"^(?!\w*(\w)(\w)\2\1).*"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
acritan
aesthophysiology
amphimictical
baruria
calomorphic
disarmature
effusive
fluted
fusoid
goblinize
nihilistic
noisefully
picrorhiza
postarytenoid
revolutionize
suprasphanoidal
suspenseful
tapachula
transmit
unversatile
vibetoite
abba
anallagmatic
bassarisk
chorioallantois
coccomyces
commotive
engrammatic
glossoscopia
hexacoralla
hippogriffin
inflammableness
otto
overattached
saffarid
sarraceniaceae
scillipicrin
tlapallan
trillion
unclassably
unfitting
unsmelled
warrandice
"""#
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