WikiDer > Yordam: yangi boshlanuvchilar uchun Lua - Vikipediya

Help:Lua for beginners - Wikipedia
 WP: Lua
(gapirish)
 Yordam bering
 
 Qilmoq
 
 Resurslar
mw: qo'llanma
 

Umumiy nuqtai

Lua orqali ba'zi bir cheklovlar bilan Vikipediyada amalga oshiriladigan dasturlash tili Skribunto. Uning maqsadi - har xil moslashtirilgan ma'lumotlarni namoyish qilish uchun Vikipediya tarkibidagi sahifalarda mavjud bo'lgan ma'lumotlarni qayta ishlashga imkon berish.

Eng muhim yordam fayli MediaWiki Scribunto Lua ma'lumotnomasi, bu tilning qisqacha mazmunini va MediaWiki-da amalga oshirilgan standart kutubxona qo'ng'iroqlarini taqdim etadi.

MediaWiki-ga tegishli bo'lmagan umumiy Lua ma'lumotnomasi juda yaxshi yozilgan, keng qamrovli va ma'lumotga ega bo'lish bilan birga yangi boshlanuvchilar uchun muammoli bo'lishi mumkin, chunki ba'zi xususiyatlar Vikipediyada ishlamaydi - chop etish (), bu standart Lua "salom dunyo" dasturlarida uchraydi.

Amaldagi dastur bilan bog'liq muammolar

Bundan tashqari, yo'qligi chop etish (), boshqa xususiyatlar etishmayapti - qarang Standart Luadan farqlar to'liq ro'yxat uchun.

Hozirgi vaqtda undan foydalanish maqsadga muvofiqdir mw.ustring o'rniga funktsiyalar mag'lubiyat, chunki ikkinchisi ba'zida Unicode belgilarida ishlamay qoladi.

Kiritish

Dasturlar faqat sahifani "tahlil qilishda" (u yoki unga kiritilgan sahifani o'zgartirganda yoki oldindan ko'rishda) ishlaydi, natijani har ko'rganingizda emas. Shuning uchun kirish qutisiga Farengeyt haroratini terish va Selsiy bo'yicha mos keladigan haroratni qaytarish uchun imkon beradigan yoki sahifadagi Mandelbrot to'plamining vizualizatsiyasini bosish uchun imkon beradigan qulay Lua moduli bo'lishi mumkin emas. uni xohlagancha tez-tez kengaytirish uchun. Kirish ma'lumotlarini o'z ichiga olgan haqiqiy Wiki sahifasi (yoki hech bo'lmaganda oldindan ko'rish uchun yuborgan sahifangiz) bo'lishi kerak.

Biroq, Wiki-dagi har qanday matn tarkibidagi sahifadan tarkibni import qilish uchun mw.title.new kabi kutubxona funktsiyalaridan foydalanish mumkin. Shu bilan birga, fayllardan ma'lumotlarni, xml matnli ma'lumotlarni o'z ichiga olgan .svg fayllarini ham import qila olmaysiz.

Lua modulini chaqirish

Lua qo'ng'iroqlari juda o'xshash andozalarva shunga o'xshash kichik blok blokidan iborat

{{#invoke:ConvertNumeric| decToHex | 7733}}

Ushbu matn Lua skriptini o'zi deb ataydi, u ichida joylashgan Modul: ism maydoni. Ushbu qo'ng'iroqning ta'siri ma'lumotni ichida yuborishdir #invoke blokirovkasini Lua moduliga qo'ying va qavs ichidagi hamma narsani qaytarib yuboradigan matni bilan almashtiring. (To'liq ma'noda, "qaytish" bayonotida)

Bu holda birinchi "parametr" ekanligini unutmang decToHex, aslida a funktsiya Lua moduli ichida chaqirilgan. Ushbu maydon har doim ham qo'shilishi kerak #invoke. Modullarni yaxshi bilmaydiganlarga, ayniqsa, undan keyin hamma narsani kutadigan Vikipediya shablon kodlovchilariga | parametr bo'lish uchun ushbu qo'shimcha maydonga bo'lgan ehtiyoj, ayniqsa modulning barcha ishlatilishi uning mavjudligiga bog'liq bo'lsa, ajablanarli. Ular uchun o'zingizning ishingizni hujjatlashtirishda aniq foydalanish yo'riqnomasini kiritish foydalidir {{mlx | ConvertNumeric | decToHex | 7733}} shunda ular buni tashlab ketmaslikni tushunadilar.

Ko'pgina mavjud modullar uchun misol #invoke ssenariysi (va boshqa ozgina narsa) da berilgan Modul munozarasi: sahifa. O'zgarishlar ta'sirini ko'rish uchun mualliflar nutq yorlig'iga tez o'tish imkoniyatiga ega, ammo siz hech qachon munozarasi sahifasini shablon sifatida o'zgartirmasligingiz kerak - odamlar aslida bu haqda gaplashishlari mumkin!

Yana bir misol: LuaCall-dan bitta Lua yo'riqnomasini bajarish uchun foydalanish

Boshlovchi sifatida yoki oddiy suhbat sahifasida siz Lua-dan foydalanishni istagan birgina kichik hisob-kitoblarga ega bo'lishingiz mumkin, ammo to'liq modul yozishni xohlamaysiz. Siz topishingiz mumkin Modul: LuaCall buning uchun qulay. Masalan, qanday qilib ochko'zligini sinab ko'rishingiz mumkin Lua naqshlari ishlaydi:

  • {{#invoke: LuaCall | main | a = bbbbbbbbbba | b = bb (. *) b (. +) bba | string.match (a, b)}}bbbb

yoki a uzunligini hisoblang Bilasizmi kanca yoki a-ning matn qismi Bilasizmi nomzod:

  • {{#invoke: LuaCall | main | a = ... LUA moduli bilan DYK kancangiz uzunligini hisoblashingiz mumkinmi? | string.len (a)}}69

Ushbu aniq misollarda, ammo Modul: String bu ikkala vazifani ham bajara olardi.

Stsenariy Modul: LuaCall har qanday nomlangan parametrlar to'plamini qabul qilish uchun yozilgan nom = qiymat, ipni saqlaydigan har bir kishi uchun qiymat nomi bilan o'zgaruvchida nomva keyin ushbu o'zgaruvchini Lua-da mavjud bo'lgan har qanday funktsiya uchun parametr sifatida ishlatishga imkon beradi. Keyin skript faqat birinchi funktsiya tomonidan qaytarilgan qiymat (buni eslang Lua funktsiyalari bir nechta qiymatlarni qaytarishi mumkin, lekin bu holda faqat birinchisi moduldan qaytariladi).

Xatolar

Lua xatolari qizil "Skript xatosi" xabarlari sifatida ko'rinadi. Agar Javascript yoqilgan bo'lsa, qizil skript xato xabari havola odatda uni xatolik yuz bergan modul qatoriga qaytarishga imkon beradi. Ba'zi istisnolar mavjud, masalan, "modul topilmadi", agar modulning o'zi noto'g'ri yozilgan bo'lsa yoki "ko'rsatilgan funktsiya mavjud emas" bo'lsa, berilgan funktsiya nomi yaroqsiz.

Lua dasturining tarkibi: Chiqish

Vikipediya Lua dasturining eng asosiy qismi bu qaytish o'z sahifasini o'z ichiga olgan sahifaga qaytaradigan bayonot #invoke. Siz mumkin qaytish bayonotini o'z ichiga olmasa ham, xatosiz ishlaydigan Lua funktsiyasiga ega bo'ling, ammo Vikipediyada bu befoyda, chunki Lua dasturlari umuman Vikipediyada yon ta'sirga ega bo'lolmaydi.

Modulning o'zi Lua-ni qaytarishi kerak stol qadriyatlar. Lua jadvali jingalak qavs ichida vergul bilan ajratilgan qiymatlar ro'yxati sifatida ifodalanadi. Modul chaqirilganda #invoke, funktsiya ushbu jadvalda nomlar (| dan keyin birinchi argument) izlanadi. Ushbu funktsiya, o'z navbatida, a sifatida ifodalanishi mumkin bo'lgan narsani qaytarishi kutilmoqda mag'lubiyat.

Shuning uchun, return {mw.ustring.gmatch ("Salom dunyo", "(. *)")} aslida to'liq Lua moduli (juda g'alati bo'lsa ham) - mw.ustring.gmatch tomonidan qaytarilgan funktsiyani (yuqorida keltirilgan Lua ma'lumotnomasida keltirilgan iterator funktsiyasi) massivning yagona elementi (ichida ko'rsatilgan) {}) - qaysi yordamida amalga oshirilganda {{#invoke: ModuleName | 1}} "Salom dunyo" qatorini beradi. Ammo, narsalar odatda shu tarzda bajarilmaydi. Odatda biz umumiy shakldan foydalanamiz:

mahalliy p = {} - p o'zgaruvchini bo'sh jadval sifatida belgilaydi, ammo * emas * nil.funktsiya p.asosiy( ramka ) - Ushbu blok p ["main"] jadval elementini funktsiya sifatida belgilaydi.    qaytish "Salom Dunyo" - funktsiyaning mag'lubiyat natijasi.oxiri - funktsiya ob'ektini belgilaydigan blokni tugatadi p ["main"] (yoki p.main).qaytish p - Bu "main" tugmachasi ostida joylashgan p jadvalini qaytaradi     - yuqoridagi funktsiya (p.main), uni chaqirganda "Hello world" qatorini qaytaradi.

Yozib oling funktsiyasi p.main (ramka) ... oxiri ga teng p.main = funktsiya (ramka) ... oxiri yoki p ["main"] = funktsiya (ramka) ... oxiri. Funktsiya - bu kalit bilan olingan qiymatlarning yana bir turi "asosiy" stoldan p. Agar siz foydalanuvchilarga bir xil modulni chaqirishga ruxsat berishni xohlasangiz {{#invoke:modul nomi| salom}} o'rniga {{#invoke:modul nomi| asosiy}}, yozishingiz mumkin p.hello = p.main ushbu funktsiyaga havolani jadvaldagi yangi kalitga nusxalash uchun. Siz hatto yozishingiz mumkin p [""] = p. asosiy, bu sabab bo'ladi {{#invoke:modul nomi|}} bilan bir xil mahsulot ishlab chiqarish {{#invoke:modul nomi| asosiy}}. Funktsiyalarni ma'lumotlar turi deb o'ylashni o'rganish keyinchalik kutubxona funktsiyalari bilan ishlash uchun juda muhimdir mw.ustring.gsubva iterator funktsiyalarini yaratish.

Lua dasturining tarkibi: Kirish

The ramka yuqoridagi parametr (bu ism har doim Vikipediya Lua modullarida berilgan) yana bir jadvalni oladi, u o'tkaziladi dan qo'ng'iroqni amalga oshiradigan sahifa ga Lua moduli. Unda hayratlanarli miqdordagi narsalar mavjud, ulardan bir nechtasi yangi boshlanuvchilarga tegishli.

Argumentlar

ramka.args o'z ichiga oladi boshqa jadval, ya'ni foydalanuvchi tomonidan yuborilgan barcha tarkib #invoke bajariladigan funktsiya nomi ko'rsatilgan birinchi argumentdan tashqari qavslar. Shunday qilib {{#invoke:ConvertNumeric| decToHex | 3377}}, Ip "3377" ning mazmuni frame.args [1] (bu xuddi shunday ramka ["args"] [1] lekin emas xuddi shunday frame.args ["1"] yoki ramka ["args"] ["1"]). Noma'lum parametrlar raqamlar bilan kalit sifatida chiqadi (frame.args [1], frame.args [2]va boshqalar), nomlangan parametrlar parametr nomlari (satrlari) bilan kalit sifatida chiqadi (frame.args ["hisoblash"], frame.args ["uslub"], va boshqalar.).

Misol:

{{#invoke:modul nomi|funktsiya nomi| 3377 | 4 | hisoblash = 3 | uslub = qalin}}

natijalar

frame.args [1]=3377, frame.args [2]=4, frame.args ["hisoblash"]=3, frame.args ["uslub"]="qalin".

Ota-ona ramkasi

Ichida ramka bor ota-ona skriptni beradigan sahifani chaqirgan sahifaga ishora qiling va shu bilan argumentlarni chiqarishingiz mumkin. Faqat yozing

parent = frame.getParent (ramka)

va parent.args ushbu dalillarni o'z ichiga oladi.

Sinonimik iborani ishlatish Luada mashhur ota-ona = ramka:getParent (), yozish zarurligini bekor qilish ramka ikki marta. Yo'g'on ichakka e'tibor bering (:nuqta o'rniga (.). ota-ona = ramka: getParent () bilan aynan bir xil ma'noni anglatadi parent = frame.getParent (ramka). Yangi boshlanuvchilar uchun bu chalkash bo'lishi mumkin va bu iborani bilish juda muhimdir. Agar siz uni noto'g'ri ishlatsangiz, skript xatolari bu xato ekanligini ko'rsatishda juda yaxshi.

Asosiy disk raskadrovka

Nosozliklarni tuzatish dasturlarni yozishingiz bilanoq boshlanishi mumkin va oddiygina mag'lubiyat birikmasi yordamida amalga oshiriladi, shunchaki asosiy funktsiyangizda (p.main) "debuglog" kabi taniqli nom bilan o'zgaruvchini o'rnating. local debuglog = "". Ushbu boshlang'ich "" ta'rifi yordam beradi, chunki aks holda shunday bo'ladi nol va mag'lubiyatni nilga birlashtirish sizni xato qiladi. Endi har qanday o'zgaruvchiga ega bo'lishni xohlasangiz, x ni ayting, shunchaki yozing debuglog = debuglog .. "x =" .. tostring (x), va dastur oxirida bor qaytib chiqish .. disk raskadrovka "Tostring" x ning satr sifatida talqin qilinishini ta'minlash funktsiyasidir, agar u jadval, nil va hk bo'lsa, u skript xatosi sifatida emas, balki "jadval", "nil" va boshqalar ko'rinishida bo'ladi.

Formatlash

The WP: Lua uslubi bo'yicha qo'llanma Javascript moduli muharriri kutgan ba'zi bir formatlash bo'yicha asosiy takliflarni beradi, masalan, to'rtta bo'shliqdan foydalanish va agar, aks holda, bir xil chuqurlikda tugashni saqlash.

Satr oxiriga sharhlar - bilan belgilanadi. Ulardan foydalaning. Vikipediya uchun ko'plab modullar to'g'ri, chiziqli dizaynga ega, ammo bu yuzinchi marta kodga qaytganingizda, sizning bo'limlaringiz aniq belgilanishi yordam bermaydi degani emas. Lua uslubi bo'yicha qo'llanmada sizning ishingizni yanada tartibli saqlash uchun funktsiyalardan foydalanish bo'yicha qo'shimcha tavsiyalar berilgan.

Ajoyib xatolar

Yodingizda tutishni istagan ba'zi xatolar:

  • Satr qiymatini chaqirishga urinish. Bu sizning biriktirgan narsalaringizdagi biron bir joyda mag'lubiyat va o'zgaruvchi o'rtasidagi .. ni unutganingizni anglatadi.
  • O'zgaruvchi unga narsalar tayinlash bo'yicha barcha harakatlaringizni inobatga olmaydi. Siz beixtiyor yozgan bo'lishingiz mumkin ikkitasi mahalliy bayonotlar - biri o'zgaruvchining qiymatini cheklangan mintaqada o'rnatadi va dastur ushbu mintaqadan chiqib ketganda, siz eski qiymatga qaytasiz.
  • Raqamli jadval yozuvlari unga tayinlash uchun barcha harakatlaringizni e'tiborsiz qoldiradi. Buning sababi, ["50"] emas a [50]. Odatda siz bir joyda string funktsiyalari bilan parametrni (siz chaqiruvdan qabul qilgan bo'lishingiz mumkin) qayta ishladingiz, lekin boshqa joyda raqamli operatsiyalarni bajardingiz, indeks uchun foydalanishingiz mumkin bo'lgan ikki xil o'zgaruvchiga ega bo'ldingiz.
  • Siz ko'rsatmoqchi bo'lgan ba'zi grafikalar tepaliklarga qarab ketmoqda. (aslida HTML xatosi) Siz
laringizni yopmadingiz, shuning uchun barcha yuqori: va chap: uslublar qo'shilib boraveradi.
  • ... yo'q ... Nil o'zgaruvchiga tayinlash kabi qila olmaydigan har xil narsalar mavjud x.somefield yoki x [n] bo'lsa x nolga teng, birlashtirilgan a .. b agar a yoki b nil bo'lsa, yoki x nil bo'lsa, [x] ni baholang. Bunday o'zgaruvchilarni (mahalliy) x = {}, a = "" va boshqalar bilan boshlang. Ushbu xatolarda ko'pincha "global" qayd etiladi, chunki sizda yo'q mahalliy nil o'zgaruvchisi uchun bayonot.
  • string kutilgan, funktsiya mavjud. Mw.ustring.gmatch kabi ba'zi muhim narsalar aslida qaytadi funktsiyalari, torlar emas - qarang Vazifalar quyida.
  • bunday modul yo'q. Siz mavjud bo'lmagan modulni # chaqirgansiz - yoki #invoke: x o'rniga #invoke: Module: x yozgansiz.
  • ko'rsatilgan funktsiya mavjud emas edi. Siz modulni # chaqirgansiz, lekin modul nomidan keyingi maydon noto'g'ri. Ko'pincha ushbu maydon "main" kabi standart nomni kutadi va siz uni unutib, to'g'ridan-to'g'ri ma'lumotlar parametriga o'tdingiz. Agar funktsiya nomiga ishonchingiz komil bo'lmasa, modul hujjatlarini tekshiring yoki kodda qaysi funktsiya (lar) "ramka" parametrini qabul qilganligini qidiring.
  • Jadvallar va tegishli tushunchalarni tushunish

    • An ifoda ro'yxati vergul bilan ajratilgan qiymatlar to'plamidir. Qadriyatlar qatorlar, raqamlar, jadvallar, funktsiyalar va boshqalar bo'lishi mumkin.
    • A ketma-ketlik bu 1 dan N gacha bo'lgan indekslarga ega yozuvlar to'plami, bu erda N musbat tamsayıdir. Ular ifoda ro'yxati atrofida qavslarni joylashtirish orqali yaratilishi mumkin. Masalan, agar a = {1, "tirnoq", mw.ustring.gmatch ("abca", "a"), {2,3,4}} keyin a [1]=1, a [2]= "tirnoq", a [3] tomonidan qaytarilgan funktsiya gmatch ()va a [4] bu jadval {2,3,4}. Ifodalar ro'yxatini jadval yordamida ham tiklash mumkin ochish (): b, c, d = ochish (a) o'rnatadi b=1, v= "tirnoq", va d funktsiya sifatida qaytarilgan gmatch (); {2,3,4} bu holda bekor qilinadi.
    • A stol ixtiyoriy ravishda nomlangan tugmalar bilan to'ldirilgan ketma-ketlik: raqam ["two"] = "2". Kabi bir nechta jadval funktsiyalari table.concat faqat raqamlangan qiymatlar bilan ishlaydi va nomlangan tugmalarni e'tiborsiz qoldiradi.
    • The metatable jadval xatti-harakatlarini o'zgartirish uchun katta, ixtiyoriy usullar to'plamini taklif qiladi. Masalan, funktsiyaga o'xshab qo'ng'iroq qilinadigan jadvalni belgilashingiz mumkin.

    Jadvalni boshlash

    Bayonotda birdaniga butun jadvalni yaratish ko'pincha foydalidir. Buning ko'plab teng usullari mavjud, ammo yorliqlar har qanday qiymat uchun ishlamaydi. Dastlab, har bir kalit va qiymatni aniq belgilashning eng umumiy usuli:

    a = {[0] = 'nol', [1] = 'bitta', ['1'] = 'bitta uchun satr'}

    Agar ketma-ketlik tugmachalari (musbat tamsayılar) tartibda berilgan bo'lsa, faqat qiymatlarni berish kerak, shuning uchun quyidagilar tayinlanadi "bitta" ga a [1]:

    a = {[0] = 'nol', 'bitta', ['1'] = 'bitta uchun satr'}

    Agar tugmachada faqat harflar, raqamlar va pastki chiziqlar bo'lsa va raqamsiz bilan boshlanadigan bo'lsa, qavslar va tirnoqlarni olib tashlash mumkin:

    a = {a = 'bitta', b = 'ikkita'}

    Bu xuddi shunday a = {["a"] = 'bitta', ["b"] = 'ikki'}.

    Biroq, bu raqam bilan boshlangan tugmachalar uchun muvaffaqiyatsiz bo'ladi: olti = {7f = 127} xatoga yo'l qo'yadi; foydalanish hex = {['7f'] = 127} o'rniga.

    Shuni esda tutingki, berilganda ichida qavslar yoki tenglik belgisining o'ng tomonida tirnoq belgilari kerak, aks holda satr qiymatlari o'zgaruvchi sifatida qabul qilinadi:

    a = {[b] = c}

    o'zgaruvchining qiymatini belgilaydi v kalitga o'zgaruvchida mavjud b.

    Vazifalar

    • Funktsiyalar har qanday qiymatni qaytarishi mumkin - funktsiyani o'z ichiga oladi. Bu boshlang'ichni chalkashtirib yuboradigan kuchli xususiyatdir. Agar siz o'rnatgan bo'lsangiz a = mw.ustring.gmatch (matn, "(.)"), tayinlangan natija a bo'ladi a funktsiya, mag'lubiyat belgisi emas! Biroq, tayinlash b = a () ichida saqlangan funktsiyani chaqirish orqali a birinchi o'yinni qaytaradi (mag'lubiyat). Har safar o'rnatganingizda b = a () shundan so'ng siz yana bir o'yin (mag'lubiyat) olasiz b, gugurtingiz tugamaguncha va olguncha nol. Ko'pchilik iterator funktsiyalari shu tarzda harakat qiling.
    • Turli xil o'zgaruvchilardan foydalanib, iterator funktsiyalari uchun alohida hisoblarni saqlashingiz mumkin. Masalan, agar siz o'rnatgan bo'lsangiz q = mw.ustring.gmatch (matn, "(x.)") xuddi shu modulda bir xil matn qismidagi belgilarni tortib olishingiz mumkin (matn) baholash orqali d = q () o'z joyingizni yo'qotmasdan a ().
    • Qo'ng'iroqlar tilni yaxshi biladiganlar uchun ishlashda katta foyda keltiradi.
    • Funktsiya nomlari ko'pincha "p.myFunctionName" shaklida bo'ladi, bu erda p - dasturning pastki qismidagi "return p" dan jadval. Buning sababi shundaki, siz faqat #invoke asl nusxasidan ushbu jadvaldagi yozuvlar bo'lgan funktsiyalarga kirishingiz mumkin. Dastur doirasida mahalliy foydalanish funktsiyalari istalgan nomga ega bo'lishi mumkin.

    Naqshlarni tushunish

    Eslatma: Lua naqshlari emas doimiy iboralar an'anaviy POSIX ma'nosida va ular hatto doimiy iboralarning bir qismi emas. Ammo ular ko'plab konstruktsiyalarni doimiy iboralar bilan bo'lishadilar (ko'proq) quyida).

    Lua naqshlari a ni aniqlash, topish va boshqarish uchun ishlatiladi naqsh ipda. U umumiy qidiruvni amalga oshirishi va matndagi harakatni o'zgartirishi mumkin, ammo shunchaki oddiy matnni bajaradigan ko'proq imkoniyatlarga ega. Masalan, "New yorker", "New-Yorker" va "NewYorker" xatolarini "New Yorker" ga o'zgartirishi mumkin.

    • Dastlab, naqsh maxsus belgilarni o'z ichiga olmasa, oddiy chiziq kabi ishlaydi ^ $ () % . [] * + - ?
    • Kvadrat qavslar [ ] mos kelish uchun ishlatiladi bitta bitta belgi tanlovlar ro'yxatidagi satrda. [abc] a, b yoki c harflariga mos keladi. Bilan ^ darhol keyin [ ular "har qanday narsani" bildiradi: [^ abc] = a, b yoki c emas. Qavslar ichida va birinchi belgi bo'lmaganida, minus - oralig'ini bildiradi: [a-z] a, b, c,…, z bitta bitta belgiga to'g'ri keladi.
    • Davr . har qanday belgiga mos keladi.
    • Foiz % mumkin bo'lgan belgining mos keladigan katta to'plamini (sinfini) unga harf qo'yilganda bildiradi. Qarang [1] to'liq ro'yxat uchun. Tinish belgilaridan keyin (yuqoridagi maxsus belgi yoki yo'qligidan qat'i nazar)% olib tashlanadi va tinish belgilari tom ma'noda belgi sifatida qabul qilinadi; %% = tom ma'noda%. Maxsus sinflarga muvozanatli sinf% bxy va% f [set] kiradi; qo'shimcha ma'lumot olish uchun yuqoridagi havolani ko'ring.
    • Qavslar ( ) ushlanganligini ko'rsatadi. Rasmga keyinchalik qidiruv satrida yoki string.gsub o'rnini bosuvchi qatorda% 1 dan% 9 gacha kirish mumkin va natijalar ifodasi ro'yxati sifatida string.match tomonidan qaytariladi.
    • Saralash ? - * + bitta belgining takrorlanishlarini belgilang (uzunroq satr emas).
    • ? 0 yoki 1 takrorlashni anglatadi: "a?" "a" yoki "" bilan mos keladi.
    • - 0 yoki undan ortiq takrorlanishni anglatadi, mos keladigan darajaga erishish uchun iloji boricha kamroqni tanlang ("ochko'z emas"). Masalan, string.match ("bbbb", "(.-)") hosil bo'ladi ", bu foydali emas, chunki iboraning uchlarini ildiz otadigan va uni nol belgilarga mos kelishiga to'sqinlik qiladigan narsa yo'q.
    • * 0 yoki undan ko'p takrorlashni anglatadi, imkon qadar ko'proq tanlaydi ("ochko'z"). Masalan string.match ("bbbb", ". *") Bbbb hosil qiladi.
    • + imkon qadar ko'proq ("ochko'z") tanlab, 1 yoki undan ortiq takrorlashni anglatadi.

    E'tibor bering chapda Tanlov mavjud bo'lganda barcha boshqalar ustidan saralash qoidalari mavjud: (. *) b (. *) "bbb" ga mos kelganda "bb", "", a (.-) b (.-) a mos kelganda "abbba" qaytadi "", "bb".

    • ^ va $ agar ular naqshning tegishli joyida bo'lsa, satr boshi va oxirini bildiradi. Aks holda ular so'zma-so'z belgilar. ^ string.gmatch funktsiyasida ishlatilmaydi.

    Lua naqshlari uchun qo'llanma metaviki.

    Lua naqshlariga nisbatan doimiy iboralarga nisbatan eslatma

    Lua naqshlari erkin asoslangan kuni doimiy iboralar (ba'zan regex yoki regexp-ga qisqartiriladi). Lua naqshlarida ataylab eng murakkab muntazam ekspluatatsiya konstruktsiyalari yo'q (Lua kod bazasini shishirmaslik uchun), bu erda ko'plab boshqa kompyuter tillari yoki kutubxonalari to'liq to'plamdan foydalanadi. Lua naqshlari hattoki doimiy iboralarning bir qismidir, chunki kelishmovchiliklar ham mavjud, masalan Lua qochish belgisidan foydalangan % o'rniga \,va Lua ta'minoti kabi qo'shimchalar - ning ochko'z bo'lmagan versiyasi sifatida *.

    Lua naqshlarida oddiy iboralar bilan taqqoslaganda etishmaydigan ba'zi narsalar ro'yxati:

    • Siz qila olmaydi bitta belgidan boshqa har qanday narsani almashtirishni qidiring (siz qila olmaydi demoq (uning | uni) orasidan birini tanlash uning va uni, siz faqat aytishingiz mumkin [abc] bitta belgidan birini tanlash a, b, yoki v).
    • Siz qila olmaydi kabi ko'p harfli konstruktsiyalarning ko'pligini qidiring (choo -) * choo mos kelmoq choo, cho-choo yoki chou-choo-choo. Lua naqshlari bilan buni amalga oshirishning iloji yo'q.
    • Siz qila olmaydi kabi takrorlanishlarning minimal va maksimal sonini ko'rsating [0-9]{3,5} (3 dan 5 gacha raqamlarga mos kelish uchun); siz Luada aytgan bo'lardingiz % d% d% d% d?% d? o'rniga bu holda.

    Keyinchalik kuchli variantlarni taklif qiladigan Lua kutubxonalari mavjud,[2] shu jumladan oddiy iboralar, ammo Vikipediyada qo'llab-quvvatlash juda oddiy.

    Vikipediya doimiy iboralar uchun yordam beradi (Lua, aytib o'tganimizdek, buni amalga oshiradi) emas qo'llab-quvvatlash) da Vikipediya: AutoWikiBrowser / Oddiy ifoda.