Expresiones regulares en Kotlin con ejemplos: para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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ón
  • containsMatchIn() — verifica si la cadena contiene al menos una coincidencia
  • find() — encuentra la primera coincidencia
  • findAll() — encuentra todas las coincidencias
  • replace() — reemplaza las coincidencias con la cadena especificada
  • split() — 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álido


Ejemplo 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-43


Observa: 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