Expresiones regulares en Kotlin: guía completa para principiantes
Las expresiones regulares (regex) son una herramienta poderosa para buscar, reemplazar y validar cadenas según un patrón. En Kotlin, el trabajo con expresiones regulares se implementa a través de la clase Regex, que proporciona métodos convenientes para el procesamiento de texto. En este artículo, analizaremos los fundamentos de las expresiones regulares en Kotlin con ejemplos claros que te ayudarán a dominar rápidamente esta herramienta.
¿Qué es una expresión regular?
Una expresión regular es una secuencia de caracteres que define un patrón para buscar en un texto. Por ejemplo, el patrón \\\\d{3} encuentra tres dígitos consecutivos, y [A-Z]+ encuentra una o más letras mayúsculas.
En Kotlin, para trabajar con regex se utiliza la clase Regex, que se puede crear de dos maneras:
// Forma 1: mediante el constructorval regex1 = Regex("\\\\d+")
// Forma 2: mediante la extensión toRegex()val regex2 = "\\\\d+".toRegex()Métodos principales de Regex en Kotlin
La clase Regex proporciona varios métodos clave para trabajar con cadenas:
matches()— verifica si toda la cadena coincide con el patróncontainsMatchIn()— verifica si la cadena contiene al menos una coincidenciafind()— encuentra la primera coincidenciafindAll()— encuentra todas las coincidenciasreplace()— reemplaza las coincidencias con la cadena especificadasplit()— divide la cadena según el patrón
Ejemplo 1: Validación de dirección de correo electrónico
Comencemos con un ejemplo práctico: la validación de una dirección de correo electrónico:
fun isValidEmail(email: String): Boolean { val emailRegex = Regex("^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,}$") return emailRegex.matches(email)}
fun main() { val emails = listOf( "user@example.com", "invalid-email", "test@domain.co.uk", "@gmail.com" ) emails.forEach { email -> println("$email: ${if (isValidEmail(email)) "válido" else "no válido"}") }}Resultado de la ejecución:
user@example.com: válidoinvalid-email: no válidotest@domain.co.uk: válido@gmail.com: no válidoEjemplo 2: Extracción de números de teléfono
Supongamos que tenemos un texto con diferentes números de teléfono y queremos extraer todos los números en el formato +7 (XXX) XXX-XX-XX:
fun extractPhoneNumbers(text: String): List { val phoneRegex = Regex("""\\+7 \\(\\d{3}\\) \\d{3}-\\d{2}-\\d{2}""") return phoneRegex.findAll(text).map { it.value }.toList()}
fun main() { val text = """ Contactos: Gerente: +7 (495) 123-45-67 Soporte: +7 (812) 987-65-43 Adicional: 8-800-555-35-35 """.trimIndent() val phones = extractPhoneNumbers(text) println("Números encontrados:") phones.forEach { println(it) }} Resultado:
Números encontrados:+7 (495) 123-45-67+7 (812) 987-65-43Observa: el número 8-800-555-35-35 no fue encontrado porque no coincide con nuestro patrón.
Ejemplo 3: Reemplazo y limpieza de texto
Las expresiones regulares son ideales para reemplazar partes de un texto. Por ejemplo, eliminemos todas las etiquetas HTML de una cadena:
fun removeHtmlTags(html: String): String { val tagRegex = Regex("<[^>]*>") return tagRegex.replace(html, "")}
fun main() { val htmlText = """ <h1>Título</h1> <p>Este es un texto <b>importante</b>.</p> <a href="link.html">Enlace</a> """.trimIndent() val cleanText = removeHtmlTags(htmlText) println("Texto limpio:") println(cleanText)}Resultado:
Blogs
Book Recommendations
Leer también
Seguridad de aplicaciones Go: top 10 vulnerabilidades para principiantes
Microservicios en Swift: por dónde empezar para un principiante en 2024
Caché en Rust: Redis, Memcached y soluciones integradas
TypeScript: funciones como parámetros con tipado estricto — análisis completo
C++ más rápido: secretos de desarrolladores senior para principiantes