import Foundation
let pattern = #"(sous[- ]sol)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
sous-sol de xm²
surface en sous-sol de d'une superfice de xx m²
sous-sol d'une superficie de xx m²
surface au sous-sol de xx m²
surface en sous-sol d'environ xx m²
sous-sol: xxm²
xx m² : - un sous-sol
sous-sol xx m²
surface sous-sol accessible de xx m²
en sous-sol de xx m
xx m² de sous sol
xx m² situé au sous-sol
en sous-sol 42 m2
au sous-sol, une surface de 25 m²
xx m² de surface commerciale en sous-sol
surface commerciale en sous-sol de xx m²
xxm de sous-sol
sous-sol sur cour
sous-sol de plain pied de xxm
sous-sol propose une surface de xx m
sous-sol et terrasse de xx m²
sous-sol de plus xx m2
sous-sol entièrement carrelé de xx m²
sous sol accessible par escalier de xx m2
sous sol sain de xxm2
sous-sol avec zone de stockage de xx m²
sous-sol idéal pour stockage de xxm²
sous sol pour le stockage de xx m2
sous-sol avec extraction de xxm2
sous-sol à rénover de xx m2
sous sol de xxm2
sous-sol d'une cuisine de xx m2
sous-sol avec réserve et vestiaire de xx m²
sous-sol à usage de réserve de xx m²
sous-sol une cave de xxm²
"""#
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