Lua Academy · Oppitunti

Lua-hahmosyntaksi

Opitte Lua-hahmojen merkkiluokat %d, %a ja %s, ankkurit sekä kvanttorit.

Oppitunti 1/413 vaihetta

Lua-hahmosyntaksi on ilmainen Lua Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/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 Lua Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Lua Academy-kurssilla on yhteensä 4 oppituntia.

Lua-kuviot ja regex

Lua käyttää omaa kuviokieltään, ei täysimääräisiä POSIX-säännöllisiä lausekkeita. Se on yksinkertaisempi ja nopeampi, mutta siitä puuttuvat vaihtoehdot (|) ja ennakkotarkistukset.

Merkkiluokat

%d tarkoittaa numeroa, %a kirjainta, %l pientä kirjainta, %u isoa kirjainta, %s tyhjemerkkiä, %p välimerkkiä ja %w aakkosnumeerista merkkiä. Iso kirjain tekee luokasta negaation: %D = muu kuin numero.

Kvantifioijat

* nolla tai useampi (ahne), + yksi tai useampi, ? nolla tai yksi, - nolla tai useampi (laiska/lyhin osuma).

local s = "hello world"
print(s:match("%a+"))   -- hello (first word)
print(s:match(".-o"))   -- hell (lazy stops early)

Ankkurit

^ ankkuroidaan merkkijonon alkuun, $ loppuun.

print(("hello"):match("^h"))     -- h
print(("hello"):match("o$"))     -- o
print(("hello"):match("^world")) -- nil

Merkkijoukot merkeillä []

Mukautetut merkkiluokat: [aeiou] vastaa mitä tahansa vokaalia, [^aeiou] mitä tahansa muuta kuin vokaalia, [a-z] pieniä kirjaimia.

local s = "Hello World 123"
print(s:match("[A-Z]"))     -- H
print(s:match("[0-9]+"))    -- 123

Erikoismerkkien suojaaminen

Erikoismerkit ( ) . % + - * ? [ ^ $ on suojattava merkillä %.

local s = "price: 3.14"
print(s:match("%d+%.%d+"))  -- 3.14 (. escaped to match literal dot)

. jokerimerkkinä

. vastaa mitä tahansa yksittäistä merkkiä. Yhdistä se kvantifioijiin: .- vastaa laiskasti mitä tahansa.

print(("abc123"):match("(.-)%d"))  -- abc (lazy, stops at first digit)

Reunakuviot %f

%f[set] vastaa tyhjää kohtaa sellaisen merkin ja set-joukkoon kuuluvan merkin välissä, joka ei kuulu set-joukkoon — tämä on hyödyllistä sananrajojen tunnistamiseen.

local s = "hello world foo"
for w in s:gmatch("%f[%a]%a+") do
  print(w)  -- hello, world, foo
end

string.find ja string.match

string.find palauttaa alku- ja loppuindeksit (+ kaappaukset). string.match palauttaa osuvan tekstin (tai kaappaukset) suoraan.

local s = "date: 2025-01-15"
local i, j = s:find("%d%d%d%d%-%d%d%-%d%d")
print(i, j)           -- 7  16
print(s:match("(%d+)-(%d+)-(%d+)"))  -- 2025  01  15

Tasapainotettu osuma %b

%bxy vastaa merkkien x ja y muodostamaa tasapainotettua paria. Esimerkiksi %b() vastaa tasapainotettuja sulkeita, myös sisäkkäiset sulkeet mukaan lukien.

local s = "func(a, (b+c), d)"
print(s:match("%b()"))  -- (a, (b+c), d)

Kuvioiden rajoitukset

Lua-kuviot eivät tue vaihtoehtoja (a|b), takaisinkutsuja, ennakko- tai jälkikatselua eivätkä nimettyjä ryhmiä. Käyttäkää näihin LPEG:tä tai ulkoista regex-kirjastoa.

Kuviosyntaksia koskeva kysymys

Mikä kuvio vastaa yhtä tai useampaa numeroa?

Kertaus: Lua-kuviosyntaksi

Lua-kuvioissa käytetään luokkia %d %a %s, kvantifioijia * + ? -, ankkureita ^ $, joukkoja [] ja tasapainotettuun osumaan tarkoitettua merkintää %b. Ne ovat tehokkaita, mutta niistä puuttuu regex-vaihtoehtojen tuki.

Aloita maksutta

Opi Lua 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
40
Oppitunnit
159

Usein kysytyt kysymykset

Onko oppitunti ”Lua-hahmosyntaksi” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Lua Academy-oppimispolun 3 oppituntia, myös oppitunnin “Lua-hahmosyntaksi”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Lua Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Lua-hahmosyntaksi”?

Opitte Lua-hahmojen merkkiluokat %d, %a ja %s, ankkurit sekä kvanttorit. Harjoittelet Lua Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Lua Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Lua Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Lua-hahmosyntaksi”-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ä Lua Academy-oppitunnilla?

Kyllä. Jokainen Lua 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

  1. Lua-hahmosyntaksi
  2. Kaappaukset ja string.match
  3. string.gmatch tokenisointiin
  4. string.gsub muunnoksiin
← Takaisin: Lua Academy