Säännöllisten lausekkeiden käyttö

Swift:
Säännöllisten lausekkeiden käyttö

Miten:

Swiftin natiivi tuki regexille hyödyntää NSRegularExpression luokkaa, jonka lisäksi käytetään String-luokan range- ja replacement-metodeja. Alla on esimerkki, kuinka regexiä käytetään löytämään ja korostamaan sähköpostiosoitteet tekstilohkosta:

import Foundation

let text = "Ota yhteyttä osoitteeseen [email protected] tai [email protected] saadaksesi lisätietoja."
let regexPattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

try {
    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("Löytyi: \(text[range])")
        }
    } else {
        print("Vastaavuuksia ei löytynyt.")
    }
} catch {
    print("Regex-virhe: \(error.localizedDescription)")
}

// Esimerkkituloste:
// Löytyi: [email protected]
// Löytyi: [email protected]

Monimutkaisemmissa tai mukavuuteen keskittyvissä skenaarioissa voit käyttää kolmansien osapuolien kirjastoja, kuten SwiftRegex, joka yksinkertaistaa syntaksia ja laajentaa mahdollisuuksia. Vaikka Swiftin vakio kirjasto on voimakas, jotkut kehittäjät suosivat näitä kirjastoja niiden tiiviin syntaksin ja lisäominaisuuksien vuoksi. Tässä on, miten voisit suorittaa samanlaisen tehtävän käyttäen hypoteettista kolmannen osapuolen kirjastoa:

// Oletetaan, että kirjasto nimeltä SwiftRegex on olemassa ja tuotu käyttöön
let text = "Ota yhteyttä [email protected] tai vieraile verkkosivustollamme."
let emailPattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

let emails = text.matches(for: emailPattern) // Hypoteettinen metodi, jonka SwiftRegex tarjoaa
if emails.isEmpty {
    print("Sähköpostiosoitteita ei löytynyt.")
} else {
    emails.forEach { email in
        print("Löytyi: \(email)")
    }
}

// Hypoteettinen tuloste olettaen, että `matches(for:)` metodi on olemassa SwiftRegex:ssä:
// Löytyi: [email protected]

Tämä esimerkki havainnollistaa kolmannen osapuolen säännöllisen lausekkeen paketin käyttöä yksinkertaistaen vastaavuuksien löytämistä merkkijonosta, olettaen että tällaiset mukavuusmetodit kuten matches(for:) ovat olemassa. On tärkeää viitata vastaavan kolmannen osapuolen kirjaston dokumentaatioon tarkan syntaksin ja metodien saatavuuden varmistamiseksi.