Expressões regulares em Kotlin: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Expressões Regulares em Kotlin: Um Guia Completo com Exemplos



Expressões regulares (regex) são uma ferramenta poderosa para buscar, extrair e substituir texto com base em padrões. Em Kotlin, trabalhar com regex é implementado através da classe Regex, que fornece uma API conveniente e compatibilidade total com a implementação Java java.util.regex.Pattern. Neste artigo, abordaremos todos os aspectos do uso de expressões regulares em Kotlin com exemplos claros.



1. Criação e Uso Básico de Regex em Kotlin



Em Kotlin, existem duas maneiras principais de criar uma expressão regular:



  • O construtor da classe Regex — você passa uma string com o padrão.
  • O método de extensão .toRegex() — chamado em uma string.


Exemplos de criação:



// Método 1: construtorval regex1 = Regex("\\\\d{3}-\\\\d{2}-\\\\d{4}")

// Método 2: toRegex()val regex2 = "\\\\d{3}-\\\\d{2}-\\\\d{4}".toRegex()

// Com flags (busca sem diferenciar maiúsculas/minúsculas)val regex3 = Regex("hello", RegexOption.IGNORE_CASE)

// Modo multilinhaval regex4 = Regex("^start", RegexOption.MULTILINE)


Nota: em Kotlin, assim como em Java, uma barra invertida dupla \\\\ é usada para escapar a barra invertida. Se você escrever \\d, precisa escrever "\\\\d".



2. Principais Funções de Regex: Verificação, Busca, Substituição



A classe Regex fornece várias funções-chave para trabalhar com strings.



2.1. Verificação de Correspondência Total — matches()



A função matches() retorna true se a string inteira corresponder ao padrão.



val emailRegex = Regex("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}")

val email1 = "user@example.com"val email2 = "invalid-email"

println(emailRegex.matches(email1)) // trueprintln(emailRegex.matches(email2)) // false


2.2. Encontrar a Primeira Correspondência — find()



Retorna a primeira correspondência encontrada como um objeto MatchResult? (ou null se nada for encontrado).



val text = "Meu telefone: 123-45-6789 e também 987-65-4321"val phoneRegex = Regex("\\\\d{3}-\\\\d{2}-\\\\d{4}")

val firstMatch = phoneRegex.find(text)if (firstMatch != null) { println("Telefone encontrado: ${firstMatch.value}") // Telefone encontrado: 123-45-6789 println("Início: ${firstMatch.range.first}") // Início: 14}


2.3. Encontrar Todas as Correspondências — findAll()



Retorna uma Sequence<MatchResult> de todas as correspondências não sobrepostas.



val text = "Preços: 100 rub., 250 rub., 50 rub."val priceRegex = Regex("\\\\d+")

val prices = priceRegex.findAll(text)prices.forEach { match -> println("Preço: ${match.value}")}// Saída:// Preço: 100// Preço: 250// Preço: 50


2.4. Substituição Baseada em Padrão — replace()



A função replace() substitui todas as correspondências encontradas por uma string especificada ou pelo resultado de uma expressão lambda.



val text = "Meu email: john@mail.com e suporte@site.org"val emailRegex = Regex("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}")

// Substituição simplesval masked = emailRegex.replace(text, "[EMAIL OCULTO]")println(masked) // Meu email: [EMAIL OCULTO] e [EMAIL OCULTO]

// Substituição com lambda (dinâmica)val replaced = emailRegex.replace(text) { match -> val local = match.value.split("@")[0] "${local.first()}***@***"}println(replaced) // Meu email: j***@*** e s***@***


2.5. Dividir uma String — split()



Divide uma string pelas correspondências com a expressão regular.



val text = "maçã,pera;banana|laranja"val separators = Regex("[,;|]")

val fruits = separators.split(text)println(fruits) // [maçã, pera, banana, laranja]

Blogs

Book Recommendations