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: do Básico às Técnicas Avançadas



Expressões regulares (regex) são uma ferramenta poderosa para buscar, extrair e substituir texto com base em padrões. Em Kotlin, o trabalho com expressões regulares é implementado através da classe Regex, que fornece uma API rica para todas as operações padrão. Neste artigo, abordaremos a sintaxe, as funções principais e exemplos práticos de uso de expressões regulares em Kotlin.



1. Criação e sintaxe básica de Regex em Kotlin



Em Kotlin, uma expressão regular é criada usando a classe Regex ou através da extensão .toRegex() para strings. Todos os metacaracteres e quantificadores padrão são suportados.



Formas de criar Regex:

// Forma 1: através do construtorval regex = Regex("\\\\d{3}-\\\\d{2}-\\\\d{4}")

// Forma 2: através de toRegex()val pattern = "[a-z]+@[a-z]+\\\\.[a-z]+".toRegex()

// Forma 3: com opções (insensível a maiúsculas/minúsculas)val caseInsensitive = Regex("kotlin", RegexOption.IGNORE_CASE)


Principais metacaracteres e quantificadores:

  • . — qualquer caractere (exceto quebra de linha)
  • \\d — dígito (0-9)
  • \\w — letra, dígito ou sublinhado
  • \\s — caractere de espaço em branco
  • ^ — início da string
  • $ — fim da string
  • * — 0 ou mais repetições
  • + — 1 ou mais repetições
  • ? — 0 ou 1 repetição
  • {n,m} — de n a m repetições


2. Operações principais: busca, verificação e extração



A classe Regex fornece vários métodos para trabalhar com texto. Vamos analisar os mais importantes.



Verificação de correspondência (matches)

O método matches() verifica se toda a string corresponde completamente ao padrão:

val phonePattern = Regex("\\\\+7\\\\d{10}")println(phonePattern.matches("+79261234567")) // trueprintln(phonePattern.matches("+7926123456")) // false (9 dígitos em vez de 10)


Busca da primeira correspondência (find)

O método find() retorna a primeira correspondência como um objeto MatchResult?:

val text = "Contatos: email@test.com e support@domain.org"val emailRegex = "[\\\\w.]+@[\\\\w.]+\\\\.[a-z]+".toRegex()val match = emailRegex.find(text)println(match?.value) // email@test.comprintln(match?.range) // 10..23 (índices de início e fim)


Busca de todas as correspondências (findAll)

Para obter todas as correspondências, use findAll(), que retorna uma sequência Sequence<MatchResult>:

val allMatches = emailRegex.findAll(text)allMatches.forEach { match ->    println("Encontrado: ${match.value} na posição ${match.range.first}")}// Saída:// Encontrado: email@test.com na posição 10// Encontrado: support@domain.org na posição 28


Verificação de existência (containsMatchIn)

O método containsMatchIn() retorna um Boolean — se há pelo menos uma correspondência:

val hasEmail = emailRegex.containsMatchIn(text)println(hasEmail) // true


3. Substituição e split com Regex



Expressões regulares são excelentes para substituir partes de uma string e dividir texto.



Substituição da primeira correspondência (replaceFirst)

val original = "ID: 12345, código: 67890"val digitRegex = "\\\\d+".toRegex()val masked = digitRegex.replaceFirst(original, "***")println(masked) // ID: ***, código: 67890


Substituição de todas as correspondências (replace)

val censored = digitRegex.replace(original, "***")println(censored) // ID: ***, código: ***


Substituição usando lambda

Você pode passar uma lambda que será chamada para cada correspondên

Blogs

Book Recommendations