Swift:
Usando expressões regulares

Como:

O suporte nativo do Swift para regex utiliza a classe NSRegularExpression, juntamente com os métodos de alcance e substituição da classe String. Abaixo está um exemplo do uso de regex para encontrar e destacar endereços de email dentro de um bloco de texto:

import Foundation

let text = "Contacte-nos em [email protected] ou em [email protected] para mais informações."
let regexPattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

do {
    let regex = try NSRegularExpression(pattern: regexPattern)
    let matches = regex.matches(in: text, range: NSRange(text.startIndex..., in: text))

    if !matches.isEmpty {
        for match in matches {
            let range = Range(match.range, in: text)!
            print("Encontrado: \(text[range])")
        }
    } else {
        print("Nenhum resultado encontrado.")
    }
} catch {
    print("Erro de Regex: \(error.localizedDescription)")
}

// Saída de amostra:
// Encontrado: [email protected]
// Encontrado: [email protected]

Para cenários mais complexos ou focados em conveniência, você pode usar bibliotecas de terceiros, como SwiftRegex, que simplifica a sintaxe e expande as possibilidades. Embora a biblioteca padrão do Swift seja poderosa, alguns desenvolvedores preferem estas bibliotecas por sua sintaxe concisa e funcionalidades adicionais. Veja como você poderia realizar uma tarefa semelhante usando uma biblioteca de terceiros hipotética:

// Assumindo que uma biblioteca chamada SwiftRegex existe e foi importada
let text = "Entre em contato em [email protected] ou visite nosso site."
let emailPattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

let emails = text.matches(for: emailPattern) // Método hipotético fornecido pelo SwiftRegex
if emails.isEmpty {
    print("Nenhum endereço de email encontrado.")
} else {
    emails.forEach { email in
        print("Encontrado: \(email)")
    }
}

// Saída hipotética assumindo que o método `matches(for:)` exista no SwiftRegex:
// Encontrado: [email protected]

Este exemplo ilustra o uso de um pacote de expressão regular de terceiros para simplificar a busca de correspondências dentro de uma string, assumindo que métodos de conveniência como matches(for:) existam. É importante consultar a documentação da biblioteca de terceiros respectiva para obter a sintaxe e disponibilidade de métodos precisos.