import Foundation
let pattern = #"construit dans les ann[eé]es (\d{2,4})"#
let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .caseInsensitive])
let testString = #"""
[DATE DE CONSTRCUTION]
R1 = date de constuction \W (\d{4}[-/]\d{4}|((\w{3,12})\s)?\d{4}|(\d{1,2}(\s?er)?)? \w{3,10} \d{4}|\d{2}/\d{2}/\d{2,4}|[ST]\d{1,4} \d{4}|((fin|d[ée]but)\s)?[1234](er|[eè]mes?) (semestre|trimestre)|courant \w{3,10}(\s\d{4})?|\w{3,10}/\w{3,10} \d{4}|((fin|d[ée]but)\s)?(semestre|trimestre) \d{1,4} \d{4})
date de constuction : 2000-2001
date de constuction : 1999/2000
date de constuction : 01/01/2020
date de constuction : 01/01/03
date de constuction : 1er janvier 2020
date de constuction : 1 er janvier 2020
date de constuction : 31 décembre 1997
date de constuction : juin 2020
date de constuction : Juillet/Juillet 2021
date de constuction : courant Juin
date de constuction : courant Juin 2003
date de constuction : été 2021
date de constuction : semestre 2 2028
date de constuction : début semestre 2 2028
date de constuction : S1 2024
date de constuction : T3 2020
date de constuction : 2ème semestre
date de constuction : 1er semestre
date de constuction : fin 2ème semestre
date de constuction : début 2020
date de constuction : fin 2022)
[CONSTRUIT EN]
R2 = construite?(\s\w{2,4})? (\d{4}[-/]\d{4}|((\w{3,12})\s)?\d{4}|(\d{1,2}(\s?er)?)? \w{3,10} \d{4}|\d{2}/\d{2}/\d{2,4}|[ST]\d{1,4} \d{4}|((fin|d[ée]but)\s)?[1234](er|[eè]mes?) (semestre|trimestre)|courant \w{3,10}(\s\d{4})?|\w{3,10}/\w{3,10} \d{4}|((fin|d[ée]but)\s)?(semestre|trimestre) \d{1,4} \d{4})
construit en 1996
construit en 2006
construit en 2000-2001
construit en 1999/2000
construit le 01/01/2020
construit le 1er janvier 2020
construit en Juin 2020
construit en Juillet/Juillet 2021
construit courant Juin
construit à l'été 2021
construit au Semestre 2 2028,
construit au S1 2024
construit au T3 2020
construit au 2ème semestre
construit fin 2ème semestre
construit début 2020
construit fin 2022
R3 = construit dans les ann[eé]es (\d{2,4})
construit dans les années 90
construit dans les années 2000
"""#
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