Literais de Regex e Correspondência
Encontre padrões com o tipo Regex.
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.
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
- Literais de Regex e Correspondência
- Grupos de Captura
- DSL do RegexBuilder
- Substituição e Divisão de Texto