import Foundation
let pattern = #"\b106\b"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
No match:
106M
1106
106in a string is bad even if it starts the line
And it may finish with the target but not as the tail of a string106
Match:
106 something else
another 106
And ofcouse "106' will work as well
I just want 106 to show up but not embedded in other numbers or text
but it's OK is the end of the line is 106
106 may also start the line but
"""#
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