import Foundation
let pattern = ##"^[A-Za-z\u00C1\u00C9\u00CD\u00D3\u00DA\u00DC\u00E1\u00E9\u00ED\u00F3\u00FA\u00FC\u00D1\u00F1]{1}[A-Za-z0-9\u00C1\u00C9\u00CD\u00D3\u00DA\u00DC\u00E1\u00E9\u00ED\u00F3\u00FA\u00FC\u00D1\u00F1\,\;\:\.@\#\$\%\&\* \-]+$"##
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
Éste es un regular expression creado para validar oraciones con caracteres de oraciones escritas en español. Puede ser utilizado para validar oraciones con vocales con acentos áéíóú, ÁÉÍÓÚ y u con diéresis Üü. No valida enters o líneas múltiples y tampoco oraciones con un espacio en el principio... por ejemplo. Aqui de romple la línea y se crea otra oración que parea con el regular expression...
ésta es la nueva línea.
El guión - es otro caracter que está permitido en el regular expression, y las comas , como pueden ver también. Ojo, de la misma manera que no se permite el uso del espacio al inicio de una oración tampoco se permite el uso de comas , o quipnes al inigio de la oración ejemplos que no parean con el regexp a continuación...
- esta oracion no hace match
ésta oración tampoco hace match
, ésta oración tampoco
por el con trario... ésta - otra horación sí parea con el regex.
José Manuel Rivera
El güiro mágico
La máquina de guerra.
ÁÉÍÓÚÜ áéíóúü
para que éste regex paree con párrafos, dene modificarlo cambiando el match del espacio por el scape character de los end of lines
- \s.
De esa manera el RegExp. parea con parrafos y multiples lineas igual que con tabs y otros tipos de end of line characters.
"""#
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