import Foundation
let pattern = #"\b(?:(?:EXONERAR|d[ae]|por|símbolo)\s([^,]+?)(?: e Gestão)?,|\b(?!SEI\b)([A-Z\d]+-\s*\d+)|SEI-\s*([\d \/]+)\b|\b([A-Z]+(?:[\s-]+[A-Z]+)+(?=,)))"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
EXONERAR, com validade a contar de 19 de agosto de 2020, DE-
NILSON DE BRITO LIMA, ID FUNCIONAL Nº 2100423-4, do cargo
em comissão de Coordenador, símbolo DAS-8, da Coordenadoria de
Gestão Centralizada de Serviços, da Superintendência de Gestão
Centralizada, da Subsecretaria de Logística, da Secretaria de Estado
de Planejamento e Gestão. Processo nº SEI-120001/010643/2020
EXONERAR, a pedido, NADIA NAKAMURA VIEIRA, ID FUNCIONAL
Nº 5099589-8, do cargo em comissão de Assessor Especial, símbolo
DG, da Secretaria de Estado de Planejamento e Gestão. Processo nº
SEI-150001/004627/2020
EXONERAR, com validade a contar de 26 de novembro de 2020,
BRUNO RAFAEL ROCHA COSTA, ID FUNCIONAL Nº 5108093-1, do
cargo em comissão de Assessor, símbolo DAS-7, da Assessoria de
Planejamento e Gestão, da Presidência, da Superintendência de Des-
portos do Estado do Rio de Janeiro - SUDERJ, da Secretaria de Es-
tado de Esporte, Lazer e Juventude. Processo nº SEI-
3 0 0 0 0 2 / 0 0 0 4 11 / 2 0 2 0 .
EXONERAR MONIQUE SANTOS NAZÁRIO, ID FUNCIONAL
5009814-4, com validade a contar de 26 de novembro de 2020, do
cargo em comissão de Diretora de Divisão de Alimentação, símbolo
DAS-6, da Superintendência de Contratos e Convênios da Subsecre-
taria de Gestão Finanças e Planejamento da Secretaria de Estado de
Administração Penitenciária, Processo nº SEI-210001/004035/2020.
"""#
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