RegexBuilder-DSL
Koosta regex-lausekkeita luettavalla rakennustyökalulla.
RegexBuilder-DSL on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.
RegexBuilder-DSL
Monimutkaisia säännöllisten lausekkeiden literaaleja on vaikea lukea. RegexBuilder-moduulin avulla voitte rakentaa kuvioita Swift-koodilla käyttäen result builder -DSL:ää, jossa on nimetyt komponentit ja tyypit.
RegexBuilderin tuominen
Tuokaa moduuli käyttöön ja muodostakaa sitten Regex Regex { ... }-rakentajalla. Sen sisällä kukin rivi on kuvion peräkkäinen osa.
import RegexBuilder
let re = Regex {
"ID-"
OneOrMore(.digit)
}
print("ID-42".contains(re))OneOrMore
OneOrMore(...) täsmää annetun komponentin vähintään kerran, mikä vastaa merkkiä +. .digit on sisäänrakennettu merkkiluokka.
import RegexBuilder
let number = Regex {
OneOrMore(.digit)
}
if let m = "abc789".firstMatch(of: number) {
print(m.0)
}ZeroOrMore ja Optionally
ZeroOrMore vastaa merkkiä * ja Optionally merkkiä ?. Niiden avulla kuvion osia voidaan toistaa tai ohittaa.
import RegexBuilder
let re = Regex {
"color"
Optionally("u")
"r"
}
print("colour".wholeMatch(of: re) != nil)
print("color".wholeMatch(of: re) != nil)Capture
Capture { ... } muodostaa sieppausryhmän. Täsmännyt osamerkkijono näkyy tulostuplessa samalla tavalla kuin literaalin sulkeilla muodostettu sieppaus.
import RegexBuilder
let re = Regex {
"v"
Capture { OneOrMore(.digit) }
}
if let m = "v123".wholeMatch(of: re) {
print("Version: \(m.1)")
}Sieppausten muuntaminen
Capture voi sisältää muunnosclosure-funktion, joka muuntaa täsmänneen tekstin tyypitetyksi arvoksi, jolloin tulos on jo valmiiksi Int-tyyppinen tai muuta tyyppiä.
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
Käyttäkää CharacterClass-tyyppiä tai sisäänrakennettuja luokkia, kuten .word ja .whitespace, sekä alueita, kuten ("a"..."z"), määrittämään sallitut merkit.
import RegexBuilder
let re = Regex {
One(.word)
ZeroOrMore(("a"..."z"))
}
print("hello".contains(re))Ankkurit rakentajassa
Lisätkää Anchor.startOfLine- ja Anchor.endOfLine-ankkurit sijaintiväitteitä varten rakentajan sisälle.
import RegexBuilder
let re = Regex {
Anchor.startOfLine
OneOrMore(.digit)
Anchor.endOfLine
}
print("100".wholeMatch(of: re) != nil)Uudelleenkäytettävät komponentit
Voitte tallentaa osakuvioita muuttujiin ja koostaa niistä kokonaisuuksia, mikä tekee suurista säännöllisistä lausekkeista modulaarisia ja helposti luettavia.
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])
}Useita sieppauksia
Kukin Capture lisää tulokseen uuden alkion järjestyksessä, joten päivämääräjäsennin tuo vuoden, kuukauden ja päivän erikseen saataville.
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)")
}DSL:n ja literaalin valitseminen
Käyttäkää literaaleja lyhyisiin kuvioihin ja DSL:ää pitkiin kuvioihin, joissa nimistä, tyypeistä ja muunnoksista on hyötyä. Ne ovat keskenään vaihdettavissa, ja niitä voi myös sijoittaa sisäkkäin.
import RegexBuilder
let re = Regex {
"#"
Capture { /[0-9a-fA-F]{6}/ }
}
if let m = "#FF8800".wholeMatch(of: re) {
print("Hex: \(m.1)")
}Pikatarkistus
Mikä RegexBuilder-komponentti täsmää johonkin vähintään kerran?
Kertaus
RegexBuilder-DSL rakentaa säännöllisiä lausekkeita Swift-koodista Regex { }-rakentajalla. Se käyttää komponentteja OneOrMore, Optionally ja muunnoksia sisältävää Capture-komponenttia sekä merkkiluokkia ja ankkureita. Se tekee monimutkaisista kuvioista helposti luettavia ja tyyppiturvallisia. Seuraavaksi muokkaatte tekstiä korvaamalla ja jakamalla sitä.
Opi Swift tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 122
- Oppitunnit
- 409
Usein kysytyt kysymykset
Onko oppitunti ”RegexBuilder-DSL” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “RegexBuilder-DSL”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”RegexBuilder-DSL”?
Koosta regex-lausekkeita luettavalla rakennustyökalulla. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”RegexBuilder-DSL”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?
Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.