Nimetyt ryhmät ja ankkurit
Edistyneet säännölliset lausekkeet.
Nimetyt ryhmät ja ankkurit on ilmainen Ruby Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/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 Ruby Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Ruby Academy-kurssilla on yhteensä 4 oppituntia.
Miksi nimetyt ryhmät?
Numeroituja kaappauksia, kuten m[1], on vaikea lukea hahmon kasvaessa. Nimetyt ryhmät antavat kullekin kaappaukselle merkityksellisen nimen.
Syntaksi: (?<name>pattern).
m = /(?<year>\d{4})-(?<month>\d{2})/.match('2026-05')
puts(m[:year])
puts(m[:month])Nimettyjen kaappausten käyttäminen
Käyttäkää nimettyihin kaappauksiin Symbol- tai String-avainta: m[:name]. Menetelmä named_captures palauttaa ne kaikki Hash-oliona.
m = /(?<user>\w+)@(?<host>\w+)/.match('alice@mail')
p m.named_capturesNimetyt ryhmät =~-operaattorin kanssa
Kun nimettyjä ryhmiä sisältävä regex-literaali on =~-operaattorin vasemmalla puolella, Ruby luo automaattisesti paikalliset muuttujat kullekin nimelle.
if /(?<word>\w+)/ =~ 'hello'
puts word
endAnkkurit: alku ja loppu
Ankkurit täsmäyttävät sijainteja eivätkä merkkejä:
^rivin alku$rivin loppu
Ne ovat ratkaisevan tärkeitä sen tarkistamisessa, että koko syöte täsmäyttää hahmon.
puts(/^abc/.match?('abcdef'))
puts(/def$/.match?('abcdef'))
puts(/^abc$/.match?('abcdef'))Merkkijonoankkurit \A ja \z
^ ja $ täsmäyttävät rivien rajoja, mikä on tärkeää monirivisissä merkkijonoissa. Kun haluatte täsmäyttää koko merkkijonon, käyttäkää mieluummin ankkureita \A (alku) ja \z (aivan loppu).
text = "first\nsecond"
puts(/^second/.match?(text))
puts(/\Asecond/.match?(text))Koko syötteen kelvollisuuden tarkistaminen
Tarkistakaa, että koko merkkijono vastaa tiettyä muotoa, ankkuroimalla sen molemmat päät. Näin ylimääräisiä merkkejä sisältävät merkkijonot hylätään.
zip = /\A\d{5}\z/
puts(zip.match?('34000'))
puts(zip.match?('34000x'))Sanan rajat
\b on sanan raja: sanamerkin ja muun kuin sanamerkin välinen sijainti. Se täsmäyttää kokonaisia sanoja kuluttamatta merkkejä.
puts('cat catalog'.scan(/\bcat\b/).length)
puts('cat catalog'.scan(/cat/).length)Lookahead
Positiivinen lookahead (?=...) varmistaa, mitä seuraavaksi tulee, sisällyttämättä sitä osumaan. Negatiivinen lookahead on (?!...).
puts('100 dollars'.match(/\d+(?= dollars)/)[0])
puts('apple pie'.match?(/apple(?! juice)/))Lookbehind
Lookbehind (?<=...) varmistaa, mitä ennen osumaa tulee. Negatiivinen lookbehind on (?<!...).
m = '$42'.match(/(?<=\$)\d+/)
puts(m[0])Kaappaamattomat ryhmät
Joskus tarvitsette ryhmittelyä vaihtoehtoisuutta tai toistomääreitä varten, mutta ette halua kaappausta. Käyttäkää merkintää (?:...) muodostamaan kaappaamaton ryhmä.
m = /(?:Mr|Ms)\. (\w+)/.match('Ms. Lee')
p m.capturesKaiken yhdistäminen
Realistisessa kelvollisuuden tarkistuksessa käytetään yhdessä ankkureita, nimettyjä ryhmiä ja toistomääreitä.
re = /\A(?<area>\d{3})-(?<num>\d{4})\z/
m = re.match('555-1234')
puts(m[:area])
puts(m[:num])Pikatarkistus
Mitä ankkureita pitäisi käyttää, jotta koko merkkijono täsmäyttää hahmon rivinvaihdoista riippumatta?
Kertaus: nimetyt ryhmät ja ankkurit
Opitte käyttämään edistyneitä regex-työkaluja:
- Nimetyt ryhmät
(?<name>...)janamed_captures - Ankkurit
^ $ \A \z \b - Lookaheadit
(?=)/(?!)ja lookbehindit(?<=)/(?<!) - Kaappaamattomat ryhmät
(?:...)
puts(/\A(?<id>\d+)\z/.match('42')[:id])Opi Ruby 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
- 29
- Oppitunnit
- 109
Usein kysytyt kysymykset
Onko oppitunti ”Nimetyt ryhmät ja ankkurit” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Ruby Academy-oppimispolun 3 oppituntia, myös oppitunnin “Nimetyt ryhmät ja ankkurit”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Ruby Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Nimetyt ryhmät ja ankkurit”?
Edistyneet säännölliset lausekkeet. Harjoittelet Ruby Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Ruby Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Ruby Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Nimetyt ryhmät ja ankkurit”-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ä Ruby Academy-oppitunnilla?
Kyllä. Jokainen Ruby 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.
Kaikki tämän kurssin oppitunnit
- Säännöllisten lausekkeiden literaalit
- Sovittaminen ja sieppaus
- Korvaaminen
- Nimetyt ryhmät ja ankkurit