WikiDer > Yordam: yangi boshlanuvchilar uchun Lua - Vikipediya
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 nom
va 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.gsub
va 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
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.- 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}}
keyina [1]
=1,a [2]
= "tirnoq",a [3]
tomonidan qaytarilgan funktsiyagmatch ()
vaa [4]
bu jadval{2,3,4}
. Ifodalar ro'yxatini jadval yordamida ham tiklash mumkinochish ()
:b, c, d = ochish (a)
o'rnatadib
=1,v
= "tirnoq", vad
funktsiya sifatida qaytarilgangmatch ()
;{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 funktsiyalaritable.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 natijaa
bo'ladi a funktsiya, mag'lubiyat belgisi emas! Biroq, tayinlashb = a ()
ichida saqlangan funktsiyani chaqirish orqalia
birinchi o'yinni qaytaradi (mag'lubiyat). Har safar o'rnatganingizdab = a ()
shundan so'ng siz yana bir o'yin (mag'lubiyat) olasizb
, gugurtingiz tugamaguncha va olgunchanol
. 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 orqalid = q ()
o'z joyingizni yo'qotmasdana ()
. - 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 tanlashuning
vauni
, siz faqat aytishingiz mumkin[abc]
bitta belgidan birini tanlasha
,b
, yokiv
). - Siz qila olmaydi kabi ko'p harfli konstruktsiyalarning ko'pligini qidiring
(choo -) * choo
mos kelmoqchoo
,cho-choo
yokichou-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.