import Foundation
let pattern = #"^(?:.*)testhack(?:[[:alnum:][:blank:]\\\/\._-]*)(?<!\.git|\.gitignore)$"#
let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .caseInsensitive])
let testString = #"""
/home/kwaadpepper/testhack
/home/kwaadpepper/testhack/TwitterReport
/home/kwaadpepper/testhack/test
/home/kwaadpepper/testhack/TwitterReport/.git
/home/kwaadpepper/testhack/TwitterReport/.gitignore
/home/kwaadpepper/testhack/TwitterReport/LICENSE
/home/kwaadpepper/testhack/TwitterReport/README.md
/home/kwaadpepper/testhack/TwitterReport/log_Error.txt
/home/kwaadpepper/testhack/TwitterReport/log_reported_2015111731047.txt
/home/kwaadpepper/testhack/TwitterReport/log_reported_2015111761057.txt
/home/kwaadpepper/testhack/TwitterReport/log_reported_2015111762323.txt
/home/kwaadpepper/testhack/TwitterReport/log_reported_201511176245.txt
/home/kwaadpepper/testhack/TwitterReport/log_suspended.txt
/home/kwaadpepper/testhack/TwitterReport/twitterReport.py
/home/kwaadpepper/testhack/TwitterReport/twitter_accounts.txt
/home/kwaadpepper/testhack/TwitterReport/twitter_accounts2.txt
/home/kwaadpepper/testhack/TwitterReport/twitter_accounts2.txt.save
/home/kwaadpepper/testhack/TwitterReport/twitter_accounts3.txt
/home/kwaadpepper/testhack/TwitterReport/.git/HEAD
/home/kwaadpepper/testhack/TwitterReport/.git/branches
/home/kwaadpepper/testhack/TwitterReport/.git/config
/home/kwaadpepper/testhack/TwitterReport/.git/hooks/pre-applypatch.sample
/home/kwaadpepper/testhack/TwitterReport/.git/hooks/pre-commit.sample
/home/kwaadpepper/testhack/TwitterReport/.git/hooks/pre-push.sample
/home/kwaadpepper/testhack/TwitterReport/.git/hooks/pre-rebase.sample
/home/kwaadpepper/testhack/TwitterReport/.git/hooks/prepare-commit-msg.sample
/home/kwaadpepper/testhack/TwitterReport/.git/hooks/update.sample
/home/kwaadpepper/testhack/TwitterReport/.git/info/exclude
/home/kwaadpepper/testhack/TwitterReport/.git/objects/21
/home/kwaadpepper/testhack/TwitterReport/.git/objects/4d
/home/kwaadpepper/testhack/TwitterReport/.git/objects/59
/home/kwaadpepper/testhack/TwitterReport/.git/objects/69
/home/kwaadpepper/testhack/TwitterReport/.git/objects/70
/home/kwaadpepper/testhack/TwitterReport/.git/objects/f9/00faba8624d5cbfee6032ad6266c6722b19457
/home/kwaadpepper/testhack/TwitterReport/.git/refs/heads
/home/kwaadpepper/testhack/TwitterReport/.git/refs/remotes
/home/kwaadpepper/testhack/TwitterReport/.git/refs/tags
/home/kwaadpepper/testhack/TwitterReport/.git/refs/heads/master
/home/kwaadpepper/testhack/TwitterReport/.git/refs/remotes/origin
/home/kwaadpepper/testhack/TwitterReport/.git/refs/remotes/origin/HEAD
"""#
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