Swift Academy · Aula

Literais de Regex e Correspondência

Encontre padrões com o tipo Regex.

Aula 1 de 413 etapas

Literais de Regex e Correspondência é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

Regex no Swift

O Swift 5.7+ tem expressões regulares nativas na biblioteca padrão e no Foundation. Você pode escrever uma expressão regular como um literal entre barras, como /\d+/, e o compilador a verifica no momento da compilação.

Um literal de expressão regular

Um literal de expressão regular produz um valor Regex. O tipo desse valor captura o resultado da correspondência. O padrão mais simples corresponde a uma sequência fixa de caracteres.

let pattern = /hello/
if "hello world".contains(pattern) {
    print("Found hello")
}

wholeMatch(of:)

wholeMatch(of:) só tem sucesso quando a string inteira corresponde ao padrão. Ele retorna uma correspondência opcional ou nil se a string inteira não corresponder.

let digits = /\d+/
if let m = "12345".wholeMatch(of: digits) {
    print("Whole match: \(m.output)")
} else {
    print("No whole match")
}

firstMatch(of:)

firstMatch(of:) percorre a string e retorna o primeiro ponto em que o padrão corresponde dentro dela.

let word = /\w+/
if let m = "  swift rocks".firstMatch(of: word) {
    print("First word: \(m.output)")
}

Acessando o intervalo da correspondência

Uma correspondência expõe um range na string original, para que você saiba exatamente onde ela ocorreu.

let text = "abc123def"
if let m = text.firstMatch(of: /\d+/) {
    print("Matched: \(m.output)")
    print("At: \(text[m.range])")
}

Classes de caracteres

Dentro de um padrão, \d corresponde a um dígito, \w a um caractere de palavra e \s a um espaço em branco. Colchetes definem um conjunto personalizado, como [aeiou].

let vowel = /[aeiou]/
if let m = "sky".firstMatch(of: vowel) {
    print("Vowel: \(m.output)")
} else {
    print("No vowels found")
}

Quantificadores

Os quantificadores controlam a repetição: * significa zero ou mais, + significa um ou mais, ? indica que algo é opcional e {n,m} representa uma quantidade limitada.

let phone = /\d{3}-\d{4}/
print("555-1234".wholeMatch(of: phone) != nil)
print("12-34".wholeMatch(of: phone) != nil)

Âncoras

Use ^ para ancorar no início e $ no fim de uma linha. As âncoras não consomem caracteres; elas afirmam uma posição.

let startsWithCap = /^[A-Z]\w*/
if let m = "Swift".firstMatch(of: startsWithCap) {
    print("Matched: \(m.output)")
}

Correspondência sem distinção entre maiúsculas e minúsculas

Você pode ignorar a diferença entre maiúsculas e minúsculas adicionando .ignoresCase() a um valor de expressão regular, o que é útil quando a capitalização da entrada é imprevisível.

let pattern = /swift/.ignoresCase()
print("I love SWIFT".contains(pattern))

Correspondendo com matches(of:)

matches(of:) retorna uma coleção com todas as correspondências não sobrepostas da string, permitindo iterar sobre cada uma delas.

let nums = "a1 b22 c333"
for m in nums.matches(of: /\d+/) {
    print(m.output)
}

Validando a entrada

Um uso comum é a validação: crie um padrão para o formato completo esperado e verifique-o com wholeMatch, que retorna nil quando não há correspondência.

func isZip(_ s: String) -> Bool {
    s.wholeMatch(of: /\d{5}/) != nil
}
print(isZip("90210"))
print(isZip("ABCDE"))

Verificação rápida

Qual método só tem sucesso quando a string inteira corresponde?

Recapitulação

Você aprendeu a escrever literais de expressões regulares com barras e a fazer correspondências usando wholeMatch(of:), firstMatch(of:) e matches(of:). Você também conheceu classes de caracteres, quantificadores, âncoras e correspondência sem distinção entre maiúsculas e minúsculas. A seguir, você extrairá dados das correspondências com grupos de captura.

Grátis para começar

Aprenda Swift com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
122
Aulas
409

Perguntas Frequentes

A aula “Literais de Regex e Correspondência” é grátis?

Sim — o texto completo de “Literais de Regex e Correspondência” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “Literais de Regex e Correspondência”?

Encontre padrões com o tipo Regex. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Literais de Regex e Correspondência”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Literais de Regex e Correspondência
  2. Grupos de Captura
  3. DSL do RegexBuilder
  4. Substituição e Divisão de Texto
← Voltar para Swift Academy