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
- Literais de Regex e Correspondência
- Grupos de Captura
- DSL do RegexBuilder
- Substituição e Divisão de Texto