0Pricing
Swift Academy · Aula

DSL do RegexBuilder

Componha regexes com um construtor legível.

DSL do RegexBuilder é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 3 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.

DSL do RegexBuilder

Literais de expressões regulares complexos podem ser difíceis de ler. O módulo RegexBuilder permite criar padrões a partir de código Swift usando uma DSL de construtor de resultados, com componentes nomeados e tipados.

Importando RegexBuilder

Importe o módulo e construa um Regex com o construtor Regex { ... }. Dentro dele, cada linha é uma parte sequencial do padrão.

import RegexBuilder

let re = Regex {
    "ID-"
    OneOrMore(.digit)
}
print("ID-42".contains(re))

OneOrMore

OneOrMore(...) corresponde a um ou mais elementos do componente fornecido, o equivalente a +. .digit é uma classe de caracteres integrada.

import RegexBuilder

let number = Regex {
    OneOrMore(.digit)
}
if let m = "abc789".firstMatch(of: number) {
    print(m.0)
}

ZeroOrMore e Opcionalmente

ZeroOrMore corresponde a * e Optionally corresponde a ?. Eles tornam partes do padrão repetíveis ou opcionais.

import RegexBuilder

let re = Regex {
    "color"
    Optionally("u")
    "r"
}
print("colour".wholeMatch(of: re) != nil)
print("color".wholeMatch(of: re) != nil)

Captura

Capture { ... } cria um grupo de captura. A substring correspondente aparece na tupla de saída, assim como ocorre com os parênteses em um literal.

import RegexBuilder

let re = Regex {
    "v"
    Capture { OneOrMore(.digit) }
}
if let m = "v123".wholeMatch(of: re) {
    print("Version: \(m.1)")
}

Transformando capturas

Uma Capture pode incluir um fechamento de transformação que converte o texto correspondente em um valor tipado, para que a saída já seja um Int ou outro tipo.

import RegexBuilder

let re = Regex {
    Capture {
        OneOrMore(.digit)
    } transform: { Int($0)! }
}
if let m = "42".wholeMatch(of: re) {
    let n: Int = m.1
    print(n + 1)
}

CharacterClass

Use CharacterClass ou elementos integrados como .word, .whitespace e intervalos como ("a"..."z") para definir quais caracteres são permitidos.

import RegexBuilder

let re = Regex {
    One(.word)
    ZeroOrMore(("a"..."z"))
}
print("hello".contains(re))

Âncoras no construtor

Adicione Anchor.startOfLine e Anchor.endOfLine para fazer afirmações posicionais dentro do construtor.

import RegexBuilder

let re = Regex {
    Anchor.startOfLine
    OneOrMore(.digit)
    Anchor.endOfLine
}
print("100".wholeMatch(of: re) != nil)

Componentes reutilizáveis

Você pode armazenar subpadrões em variáveis e compô-los, o que torna expressões regulares grandes modulares e legíveis.

import RegexBuilder

let field = Reference(Substring.self)
let re = Regex {
    Capture(as: field) { OneOrMore(.word) }
}
if let m = "name".firstMatch(of: re) {
    print(m[field])
}

Várias capturas

Cada Capture adiciona um elemento de saída na ordem, para que um analisador de datas exponha separadamente o ano, o mês e o dia.

import RegexBuilder

let date = Regex {
    Capture { Repeat(.digit, count: 4) }
    "-"
    Capture { Repeat(.digit, count: 2) }
}
if let m = "2024-05".wholeMatch(of: date) {
    print("\(m.1) / \(m.2)")
}

Escolhendo entre DSL e literal

Use literais para padrões curtos e a DSL para padrões longos que se beneficiem de nomes, tipos e transformações. Eles são intercambiáveis e podem até ser aninhados.

import RegexBuilder

let re = Regex {
    "#"
    Capture { /[0-9a-fA-F]{6}/ }
}
if let m = "#FF8800".wholeMatch(of: re) {
    print("Hex: \(m.1)")
}

Verificação rápida

Qual componente do RegexBuilder corresponde a um ou mais elementos de algo?

Recapitulação

A DSL do RegexBuilder cria expressões regulares a partir de código Swift com Regex { }, usando OneOrMore, Optionally, Capture com transformações, classes de caracteres e âncoras. Ela torna padrões complexos legíveis e seguros quanto aos tipos. A seguir, você modificará texto com replacing e divisão.

Perguntas Frequentes

A aula “DSL do RegexBuilder” é grátis?

Sim — o texto completo de “DSL do RegexBuilder” é 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 “DSL do RegexBuilder”?

Componha regexes com um construtor legível. 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 3 de 4.

Quanto tempo leva a aula “DSL do RegexBuilder”?

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