import Foundation
let pattern = #"age\s[a-z]+:\s*\d+\s*(-\s*\d+\s*(years?|months?|yrs)/\d+\s*)+years and up"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
age: adult/child gender: male/female age range: 3 - 5 years/5 - 8 years/8 - 12 years/12 years and up product type: costume character: animals & insects material: polyester theme: animal age start: 3 years age end: adult features: -face is seen through the mouth of the zebra. -zipper closure in the front and a tail in the back. -set includes: jumpsuit and head mask. -animal collection. age: -adult/child. gender: -male/female. age range: -3 - 5 years/5 - 8 years/8 - 12 years/12 years and up
"""#
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