Swift:
Usando expresiones regulares
Cómo:
El soporte nativo de Swift para regex utiliza la clase NSRegularExpression
, junto con los métodos de rango y reemplazo de la clase String. A continuación, se muestra un ejemplo de uso de regex para encontrar y resaltar direcciones de correo electrónico dentro de un bloque de texto:
import Foundation
let text = "Contact us at [email protected] or [email protected] for more information."
let regexPattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
do {
let regex = try NSRegularExpression(pattern: regexPattern)
let matches = regex.matches(in: text, range: NSRange(text.startIndex..., in: text))
if !matches.isEmpty {
for match in matches {
let range = Range(match.range, in: text)!
print("Encontrado: \(text[range])")
}
} else {
print("No se encontraron coincidencias.")
}
} catch {
print("Error de Regex: \(error.localizedDescription)")
}
// Salida de muestra:
// Encontrado: [email protected]
// Encontrado: [email protected]
Para escenarios más complejos o enfocados en la conveniencia, puedes usar bibliotecas de terceros como SwiftRegex, que simplifica la sintaxis y expande las posibilidades. Aunque la biblioteca estándar de Swift es poderosa, algunos desarrolladores prefieren estas bibliotecas por su sintaxis concisa y características adicionales. Así es como podrías realizar una tarea similar usando una biblioteca de terceros hipotética:
// Asumiendo que existe una biblioteca llamada SwiftRegex y está importada
let text = "Reach out at [email protected] or visit our website."
let emailPattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
let emails = text.matches(for: emailPattern) // Método hipotético proporcionado por SwiftRegex
if emails.isEmpty {
print("No se encontraron direcciones de correo electrónico.")
} else {
emails.forEach { email in
print("Encontrado: \(email)")
}
}
// Salida hipotética asumiendo que el método `matches(for:)` existe en SwiftRegex:
// Encontrado: [email protected]
Este ejemplo ilustra el uso de un paquete de expresiones regulares de terceros para simplificar la búsqueda de coincidencias dentro de una cadena, asumiendo que existen métodos de conveniencia como matches(for:)
. Es importante referirse a la documentación de la respectiva biblioteca de terceros para una sintaxis y disponibilidad de métodos precisa.