WikiDer > Анықтама: бастаушыларға арналған Lua - Википедия

Help:Lua for beginners - Wikipedia
 WP: Луа
(әңгіме)
 Көмектесіңдер
 
 Істеу
 
 Ресурстар
mw: анықтамалық нұсқаулық
 

Шолу

Луа - кейбір шектеулермен Википедияда іске асырылатын бағдарламалау тілі Скрибунто. Оның мақсаты - әр түрлі жекеленген ақпаратты көрсетуге мүмкіндік беру үшін Википедия мазмұны беттерінде бар деректерді өңдеуге мүмкіндік беру.

Ең маңызды анықтама файлы MediaWiki Scribunto Lua анықтамалығы, бұл тілдің қысқаша мазмұнын және MediaWiki-де енгізілген стандартты кітапханалық қоңырауларды ұсынады.

Жалпы, МедиаУики емес Lua анықтамалығы өте жақсы жазылған, жан-жақты және мазмұнды бола отырып, жаңадан бастаушылар үшін проблема тудыруы мүмкін, өйткені белгілі бір мүмкіндіктер Уикипедияда жұмыс істемейді - бастап басып шығару (), бұл Луаның «сәлем әлемі» бағдарламаларында пайда болады.

Ағымдағы іске асыруға қатысты мәселелер

Сонымен қатар, жетіспеушілік басып шығару (), басқа мүмкіндіктер жоқ - қараңыз Стандартты Луадан айырмашылығы толық тізім үшін.

Қазіргі уақытта оны қолданған жөн mw.ustring функцияларының орнына жіп, өйткені соңғысы кейде Юникод таңбаларында сәтсіздікке ұшырайды.

Кіріс

Бағдарламалар парақты «талдаған» кезде ғана іске қосылады (оны немесе оны өзгерткенде немесе алдын ала қарау кезінде), нәтижені көрген сайын емес. Сондықтан кіру терезесінде Фаренгейт температурасын теріп, сәйкес Цельсий температурасын қайтаруға мүмкіндік беретін немесе бетте Mandelbrot жиынтығының көрнекілігі кескінін басуға мүмкіндік беретін ыңғайлы Lua модулі болуы мүмкін емес. оны қалағаныңызша жиілету үшін. Кіріс деректерін қамтитын нақты Wiki парағы (немесе, ең болмағанда, алдын ала қарау үшін жіберген бетіңіз) болуы керек.

Алайда, wiki-дегі кез-келген мәтіндік мазмұн бетінен импорттау үшін mw.title.new сияқты кітапхана функцияларын пайдалануға болады. Сіз файлдарды, тіпті XML мәтіндік деректері бар .svg файлдарын да импорттай алмайсыз.

Lua модулін шақыру

Луа қоңыраулары өте ұқсас шаблондарсияқты мәтіннің шағын блогынан тұрады

{{# шақыру:Сандық түрлендіру| decToHex | 7733}}

Бұл мәтін Lua сценарийін атайды, ол Модуль: аттар кеңістігі. Бұл қоңыраудың нәтижесі - ақпараттарды ішінде жіберу # шақыру блокты Lua модуліне жауып, жақшаның ішіндегі барлық мәтінді орнына қайтаратын мәтінмен ауыстыру керек. (Сөзбе-сөз, «қайтару» мәлімдемесінде)

Бұл жағдайда бірінші «параметр» екенін ескеріңіз decToHex, шын мәнінде а функциясы Lua модулі ішінде шақырылды. Бұл өріс әрқашан кез-келгенге қосылуы керек # шақыру. Модульдермен таныс емес адамдарға, әсіресе кейіннен ештеңе күтпейтін Википедия шаблон кодерлеріне | параметр болу үшін, бұл қосымша өрістің қажеттілігі таңқаларлық, әсіресе егер модульдің барлық қолданылуы оның қатысуымен байланысты болса. Олар үшін сіздің жұмысыңызды құжаттау кезінде пайдалану туралы нақты нұсқаулықты енгізу пайдалы болады {{mlx | ConvertNumeric | decToHex | 7733}} олар оны жіберіп алмауды түсіну үшін.

Көптеген қолданыстағы модульдер үшін мысал # шақыру сценарийдің (және тағы басқалары) берілген Модуль туралы сөйлесу: бет. Авторлар үшін өзгертулердің әсерін қарау үшін сөйлесу қойындысына жылдам ауысу ыңғайлы, бірақ сіз ешқашан талқылау бетін шаблон ретінде ауыстырып алмауыңыз керек - адамдар онымен сөйлесуі мүмкін!

Тағы бір мысал: LuaCall-ді бір Lua нұсқауын орындау үшін пайдалану

Жаңадан бастаушы ретінде немесе кездейсоқ сөйлесу бетінде сіз Луаны пайдаланғыңыз келетін бір ғана есептеулерге ие бола аласыз, бірақ толық модуль жазғыңыз келмейді. Сіз таба аласыз Модуль: LuaCall бұл үшін ыңғайлы. Мысалы, сіз ашкөздікті қалай тексере аласыз Луа өрнегі жұмыс істейді:

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

немесе а ұзындығын санау Сіз білдіңіз бе ілмек немесе а мәтіндік бөлігі Сіз білдіңіз бе үміткер:

  • {{#invoke: LuaCall | main | a = ... сіз Lua модулімен DYK ілгегіңіздің ұзындығын есептей аласыз ба? | string.len (a)}}69

Осы нақты мысалдарда, алайда, Модуль: жол осы екі тапсырманы да орындай алды.

Сценарий Модуль: LuaCall кез келген аталған параметрлер жиынтығын қабылдау үшін жазылған атауы = мән, жіпті сақтайтын әрқайсысы үшін мәні аты бар айнымалыда атауы, содан кейін осы айнымалыларды Lua-да кез-келген функцияның параметрлері ретінде пайдалануға мүмкіндік береді. Содан кейін сценарий тек қана қайтарады бірінші функция қайтарған мән (есіңізде болсын) Lua функциялары бірнеше мәнді қайтара алады, бірақ бұл жағдайда тек біріншісі ғана модульден қайтарылады).

Қателер

Lua қателері қызыл «Сценарий қатесі» туралы хабарлама ретінде пайда болады. Егер Javascript қосылса, қызыл сценарий туралы қате туралы хабарлама сілтеме болып табылады Әдетте бұл модульдегі қате пайда болған жолға өтуге мүмкіндік береді. Кейбір ерекшеліктер бар, мысалы, «модуль табылмады», егер модульдің аты қате жазылған болса немесе берілген функция атауы жарамсыз болса, «сіз көрсеткен функция болмаған».

Lua бағдарламасының құрылымы: Шығарылым

Википедия Луа бағдарламасының ең негізгі бөлігі қайту бар мәлімдеме, ол қайтадан шыққан бетке шығады # шақыру. Сіз мүмкін Lua функциясы бар, егер ол қайтару туралы мәлімдемесі болмаса да, қатесіз жұмыс істейді, бірақ Википедияда бұл мағынасыз, өйткені Lua бағдарламалары жалпы Википедияда жанама әсер ете алмайды.

Модуль өзі Луаны қайтаруы керек кесте құндылықтар. Луа кестесі үтірлермен бөлінген, тізбектелген жақша ішіндегі мәндер тізімі ретінде көрсетілген. Модуль шақырылған кезде # шақыру, функциясы ол кестеден іздейді (| кейін бірінші аргумент). Бұл функция, өз кезегінде, ретінде ұсынылуы мүмкін нәрсені қайтарады деп күтілуде жіп.

Сондықтан, return {mw.ustring.gmatch («Сәлем әлем», «(. *)»)} бұл шын мәнінде толық Lua модулі (бірақ өте таңқаларлық) - ол mw.ustring.gmatch (жоғарыда келтірілген Lua сілтемесінде келтірілген итератор функциясы) қайтарған функцияны массивтің жалғыз элементі ретінде береді (ішінде ұсынылған) {}) - пайдалану кезінде орындалатын {{#invoke: ModuleName | 1}} «Hello world» жолын береді. Алайда, заттар әдетте осылай жасалмайды. Әдетте біз жалпы форманы қолданамыз:

жергілікті б = {} - p айнымалысын бос кесте ретінде анықтайды, бірақ * емес * nil.функциясы б.негізгі( жақтау ) - Бұл блок функциялар ретінде p [«main»] кестелік элементін анықтайды.    қайту «Сәлем Әлем» - Функцияның жолдық нәтижесі.Соңы - p [«main»] (немесе p.main) функциясының объектісін анықтайтын блокты аяқтайды.қайту б - Бұл «негізгі» кілтінің астында орналасқан p кестесін қайтарады     - жоғарыдағы функция (p.main), оны шақырған кезде «Hello world» жолын қайтарады.

Ескертіп қой p.main функциясы (кадр) ... соңы дегенге тең p.main = функция (кадр) ... соңы немесе p [«main»] = функция (кадр) ... соңы. Функция - бұл кілтпен бірге алынған мәннің тағы бір түрі «негізгі» үстелден б. Егер сіз пайдаланушыларға сол модульді шақыруға рұқсат бергіңіз келсе {{# шақыру:модуль аты| сәлем}} орнына {{# шақыру:модуль аты| негізгі}}, сіз жаза аласыз p.сәлем = p осы функцияға сілтемені кестенің жаңа кілтіне көшіру үшін. Сіз тіпті жаза аласыз p [«»] = бет, бұл себеп болады {{# шақыру:модуль аты|}} сияқты өнімді шығару {{# шақыру:модуль аты| негізгі}}. Функциялар туралы мәліметтер типі ретінде ойлауды үйрену кейінірек кітапханалық функциялармен жұмыс істеу үшін өте маңызды болады mw.ustring.gsubжәне итератордың функцияларын құру.

Lua бағдарламасының құрылымы: Кіріс

The жақтау жоғарыдағы параметр (бұл атау Википедия Луа модульдерінде әрқашан осылай аталады) басқа кестені алады, ол жіберіледі бастап қоңырау шалатын бет дейін Lua модулі. Онда таңқаларлық заттар бар, олардың ішінде жаңадан бастағандарға қатысты бірнеше нәрсе бар.

Дәлелдер

жақтау.аргалар қамтиды басқа кесте, яғни пайдаланушы жіберген барлық мазмұн # шақыру орындалатын функцияның аты көрсетілген бірінші аргументтен басқа жақшалар. Сонымен {{# шақыру:Сандық түрлендіру| decToHex | 3377}}, жіп "3377" мазмұны болып табылады frame.args [1] (бұл бірдей жақтау [«args»] [1] бірақ емес сол сияқты frame.args [«1»] немесе жақтау [«args»] [«1»]). Атаусыз параметрлер кілттер түрінде шығады (frame.args [1], frame.args [2]және т.с.с.), ал аталған параметрлер параметр атауларымен (жолдармен) кілттер ретінде шығады (frame.args [«count»], frame.args [«стиль»]және т.б.).

Мысал:

{{# шақыру:модуль аты|функция атауы| 3377 | 4 | санау = 3 | стиль = жуан}}

нәтижелері

frame.args [1]=3377, frame.args [2]=4, frame.args [«count»]=3, frame.args [«стиль»]=«батыл».

Ата-ана жақтауы

Ішінде жақтау бар ата-ана фрейм, сценарийді беретін парақты шақырған параққа сілтеме жасай отырып, одан дәлелдер шығара аласыз. Тек жазыңыз

parent = frame.getParent (кадр)

және parent.args сол аргументтерден тұрады.

Луада синонимдік сөйлемді қолдану өте танымал ата-ана = кадр:getParent (), жазу қажеттілігінен бас тарту жақтау екі рет. Қос нүктеге назар аударыңыз (:) нүктенің орнына (.). parent = frame: getParent () деген мағынаны білдіреді parent = frame.getParent (кадр). Жаңадан келгендер үшін бұл түсініксіз болуы мүмкін және бұл идиоманы білу маңызды. Егер сіз оны дұрыс қолданбайтын болсаңыз, сценарий қателері бұл қате екенін көрсетуге өте жақсы.

Негізгі түзету

Жөндеуді бағдарламаларды жазғаннан-ақ бастауға болады, және оны жол тізбегімен біріктіруге болады, тек негізгі функцияларыңызда (p.main) «debuglog» сияқты белгілі атауы бар айнымалыны орнатыңыз. жергілікті debuglog = «». Бұл бастапқы «» анықтама көмектеседі, себебі басқаша болады нөл және жолды нөлге дейін біріктіру қате тудырады. Енді сізде кез-келген айнымалы болса, сіз тестілегіңіз келеді, х деп айтыңыз, жай жазыңыз debuglog = debuglog .. «x =» .. tostring (x), және сіздің бағдарламаңыздың соңында бар қайтару нәтижесі .. түзету «Тостринг» - бұл х-ті жол ретінде түсіндіруге мүмкіндік беретін функция, егер ол кесте, нөл және т.б. болса, онда ол «кесте», «нөл» және т.б. ретінде Скрипт қатесі ретінде көрсетіледі.

Пішім

The WP: Lua стиліне арналған нұсқаулық Javascript модулінің редакторы күткен кейбір негізгі форматтау ұсыныстарын береді, мысалы, төрт кеңістікті шегіністерді пайдалану және егер, егер, әйтпесе, сол шегініс деңгейінде аяқталса.

Жолдың соңына түсініктемелер - белгісімен белгіленеді. Оларды қолданыңыз. Википедияға арналған көптеген модульдер тікелей, сызықтық дизайнымен ерекшеленеді, бірақ бұл жүзінші рет кодқа оралғанда сіздің бөлімдеріңіз нақты белгіленбейді деген сөз емес. Lua стиліндегі нұсқаулықта сіздің жұмысыңызды біршама реттеп отыру үшін функцияларды пайдалану бойынша қосымша ұсыныстар берілген.

Қателер

Есте сақтағыңыз келетін кейбір қателіктер:

  • Жол мәнін шақыру әрекеті. Бұл сіз тізбектелген заттардың бірінде жол мен айнымалы арасындағы .. ұмытып кеткеніңізді білдіреді.
  • Айнымалы оған заттар тағайындау үшін сіздің барлық күштеріңізді елемейді. Сіз байқамай жазған боларсыз екі жергілікті мәлімдемелер - біреуі шектеулі аймақ ішіндегі айнымалының мәнін орнатады, ал бағдарлама сол аймақтан шыққан кезде сіз бұрынғы мәнге ораласыз.
  • Нөмірленген кесте жазбасы оған тағайындалған барлық күш-жігеріңізді елемейді. Себебі [«50»] емес а [50]. Әдетте сіз бір жерде жол функциялары бар параметрді (сіз оны шақыру жолынан алған боларсыз) бір жерде жол функциялары арқылы өңдедіңіз, бірақ басқа жерде сандық амалдарды орындадыңыз, индекс үшін екі түрлі айнымалы тип қалдырдыңыз.
  • Сіз көрсетуге тырысқан кейбір графиктер төбеге қарай бет алуда. (іс жүзінде HTML қатесі) сіз
теріңізді жаппадыңыз, сондықтан барлық жоғарғы: және сол жақ: стильдер қосыла береді.
  • ... нөл ... Нөлдік айнымалыға тағайындау сияқты сіз жасай алмайтын барлық нәрселер бар x.somefield немесе x [n] болса х нөл, теңестірілген а .. б егер a немесе b нөлге тең болса, немесе x нөлге тең болса, [x] -ді бағалайды. Осындай айнымалыларды инициализациялаңыз (жергілікті) x = {}, a = «» және т.с.с. жергілікті nil айнымалысына арналған мәлімдеме.
  • жол күтілуде, функциясы бар. Mw.ustring.gmatch сияқты кейбір маңызды нәрселер оралады функциялары, жіптер емес - қараңыз Функциялар төменде.
  • мұндай модуль жоқ. Сіз жоқ модульді # шақырдыңыз - немесе #invoke: x орнына #invoke: Module: x жаздыңыз.
  • көрсетілген функция болмаған. Сіз модульді # шақырдыңыз, бірақ модуль атауынан кейінгі өріс дұрыс емес. Көбінесе бұл өріс «main» сияқты стандартты атауды күтуде, және сіз оны ұмытып, алғашқы мәліметтер параметріне көшесіз. Егер функция атауына сенімді болмасаңыз, модуль құжаттамасын тексеріңіз немесе кодтағы қандай функция (лар) «кадр» параметрін қабылдайтынын іздеңіз.
  • Кестелер мен оларға қатысты ұғымдарды түсіну

    • Ан өрнектер тізімі үтірлермен бөлінген мәндер жиынтығы. Мәндер жолдар, сандар, кестелер, функциялар және т.б.
    • A жүйелі - 1-ден N-ге дейінгі көрсеткіштері бар жазбалар жиынтығы, мұндағы N - оң бүтін сан. Оларды өрнектер тізіміне кронштейндер қою арқылы жасауға болады. Мысалы, егер a = {1, «дәйексөз», mw.ustring.gmatch («abca», «a»), {2,3,4}} содан кейін a [1]=1, a [2]= «тырнақша», a [3] функциясы болып табылады gmatch (), және a [4] бұл кесте {2,3,4}. Өрнектер тізімін кесте арқылы қалпына келтіруге болады орау (): b, c, d = орау (а) орнатады б=1, c= «тырнақша», және г. функциясы ретінде қайтарылды gmatch (); {2,3,4} бұл жағдайда жойылады.
    • A кесте - бұл кез-келген, атаулы кілттермен қосымша түрде толықтырылған: сан [«екі»] = «2». Сияқты бірнеше кестелік функциялар кесте.concat тек нөмірленген мәндермен жұмыс істейді және аталған кілттерді елемейді.
    • The метаболитті кесте тәртібін өзгертуге арналған үлкен, қосымша әдістер жиынтығын ұсынады. Мысалы, функцияны шақыруға болатын кестені анықтауға болады.

    Кестені инициализациялау

    Мәлімдемеде бірден бүкіл кестені құру пайдалы. Мұны жүзеге асырудың көптеген балама тәсілдері бар, бірақ жарлықтар барлық мәндер үшін жұмыс істемейді. Бастау үшін ең жалпы әдіс - әр перне мен мәнді нақты тағайындау:

    a = {[0] = 'нөл', [1] = 'бір', ['1'] = 'бір жол'}

    Егер реттік кілттер (натурал сандар) ретімен берілсе, тек мәндерді ғана беру керек, сондықтан келесілер тағайындалады 'бір' дейін a [1]:

    a = {[0] = 'нөл', 'бір', ['1'] = 'бір жол'}

    Егер кілт тек әріптермен, цифрлармен және астыңғы сызықтардан тұрса және цифрдан басталса, жақшалар мен тырнақшаларды алып тастауға болады:

    a = {a = 'бір', b = 'екі'}

    Бұл бірдей a = {[«a»] = 'бір', [«b»] = 'екі'}.

    Алайда, бұл цифрдан басталатын пернелер үшін сәтсіздікке ұшырайды: он алтылық = {7f = 127} қате шығарады; пайдалану алтылық = {['7f'] = 127} орнына.

    Берілгенде ескеріңіз ішінде жақшалар немесе тең белгінің оң жағында тырнақшалар қажет, әйтпесе жол мәндері айнымалылар ретінде алынады:

    a = {[b] = c}

    айнымалының мәнін тағайындайды c пернеге дейін айнымалы б.

    Функциялар

    • Функциялар кез-келген мәнді қайтара алады - функцияны қосқанда. Бұл жаңадан бастаушыны оңай шатастыра алатын күшті функция. Егер сіз орнатсаңыз a = mw.ustring.gmatch (мәтін, «(.)»), тағайындалған нәтиже а болады функциясы, жол таңбасы емес! Алайда, тағайындау b = a () ішінде сақталған функцияны шақыру арқылы а бірінші матчты қайтарады (жол). Сіз орнатқан сайын b = a () осыдан кейін сіз тағы бір матч (жол) аласыз б, сіздің матчтарыңыз біткенше және алғанша нөл. Көптеген итератордың функциялары осылай әрекет етіңіз.
    • Әр түрлі айнымалыларды қолдану арқылы итератор функциялары үшін бөлек есептеулер жүргізуге болады. Мысалы, егер сіз орнатсаңыз q = mw.ustring.gmatch (мәтін, «(x.)») сол модульде таңбаларды мәтіннің бір бөлігінен алуға болады (мәтін) бағалау арқылы d = q () өз орныңды жоғалтпай а ().
    • Қоңырау тілді жетік білетіндер үшін өнімділікте айтарлықтай артықшылықтар ұсынады.
    • Функция атаулары көбінесе «p.myFunctionName» түрінде болады, мұндағы p - бағдарламаның төменгі жағындағы «return p» кестесі. Мұның себебі, сіз тек осы кестедегі жазбаларға арналған функцияларға #invoke бастапқы операторынан ғана қол жеткізе аласыз. Бағдарлама шеңберінде жергілікті қолдануға арналған функциялардың кез-келген атауы болуы мүмкін.

    Үлгілерді түсіну

    Ескерту: Луа өрнектері емес тұрақты тіркестер дәстүрлі POSIX мағынасында, және олар тіпті тұрақты тіркестердің жиынтығы емес. Бірақ олар көптеген құрылымдарды тұрақты тіркестермен бөліседі (толығырақ) төменде).

    Луа өрнектері а-ны анықтау, табу және өңдеу үшін қолданылады өрнек жіппен. Ол жалпы іздеуді орындай алады және мәтіндегі әрекетті ауыстыра алады, бірақ тек қарапайым мәтінді орындау мүмкіндігі көп. Мысалы, бір мезетте ол 'New yorker', 'New-Yorker' және 'NewYorker' қателерін 'New Yorker' етіп өзгерте алады.

    • Бастапқыда, өрнек арнайы символдарды қамтымаған жағдайда, қарапайым жіп тәрізді жұмыс істейді ^ $ () % . [] * + - ?
    • Төрт жақшалар [ ] сәйкестендіру үшін қолданылады бір бір таңба таңдау тізіміндегі жолда. [abc] a, b немесе c әріптерімен сәйкес келеді. Бірге ^ дәл кейін [ олар «кез келген нәрсені» көрсетеді: [^ abc] = a, b немесе c емес. Жақшаның ішінде және бірінші таңба болмаған кезде минус - диапазонын көрсетеді: [a-z] a, b, c,…, z таңбаларының бір таңбасына сәйкес келеді.
    • Кезең . кез келген таңбаға сәйкес келеді.
    • Пайыз % мүмкін болатын символдардың үлкен жиынтығын (класын) әріппен толықтырған кезде көрсетеді. Қараңыз [1] толық тізім үшін. Тыныс белгілерінен кейін (арнайы таңба жоғарыда ма, жоқ па)% жойылады және тыныс белгілері әріптік таңба ретінде қабылданады; %% = тура%. Арнайы сыныптарға тепе-теңдік% bxy және% f [жиын] кіреді; толығырақ жоғарыдағы сілтемені қараңыз.
    • Жақшалар ( ) түсіруді көрсетеді. Түсірілімдерге кейінірек іздеу жолында немесе string.gsub ауыстыру жолында% 1-ден% 9 дейін қол жеткізуге болады, және нәтижелер өрнегі тізімі ретінде string.match арқылы қайтарылады.
    • Іріктеу ойындары ? - * + бір таңбаның қайталануын көрсетіңіз (ұзын жол емес).
    • ? 0 немесе 1 қайталауды білдіреді: «а?» «а» немесе «» сәйкес келеді.
    • - сәйкестікке жету үшін мүмкіндігінше азын таңдап, 0 немесе одан да көп қайталауды білдіреді («ашкөз емес»). Мысалы, string.match («bbbb», «(.-)») өнімділік «» береді, бұл пайдалы емес, өйткені өрнектің ұштарын түбірлейтін және оның нөлдік таңбаларға сәйкес келуіне жол бермейтін ештеңе жоқ.
    • * 0 немесе одан да көп қайталауды білдіреді, мүмкіндігінше көбірек таңдайды («ашкөз»). Мысалы string.match («bbbb», «. *») Bbbb береді.
    • + мүмкіндігінше көбірек таңдап, 1 немесе одан да көп қайталауды білдіреді («сараңдық»).

    Назар аударыңыз сол жақта Таңдау болған кезде барлық басқа адамдарға қатысты ережелер: (. *) b (. *) «bbb» -ге сәйкес келсе, «bb», «», ал a (.-) b (.-) a сәйкес келген кезде «abbba» оралады «», «bb».

    • ^ және $ егер олар өрнекте тиісті жерде болса, жолдың басы мен соңын көрсетеді. Әйтпесе олар сөзбе-сөз таңбалар. ^ string.gmatch функциясында қолданылмайды.

    Lua өрнектеріне арналған анықтамалық нұсқаулық қазір орналасқан метавики.

    Луа үлгілері мен тұрақты тіркестерге ескерту

    Луа өрнектері еркін негізде қосулы тұрақты тіркестер (кейде регекс немесе регекспке дейін қысқарады). Луа өрнектерінде әдейі күрделі экспрессия құрылымдары жетіспейді (Lua кодының негізін құртпау үшін), мұнда көптеген басқа компьютерлік тілдер немесе кітапханалар толық жиынтығын қолданады. Луа өрнектері тіпті тұрақты тіркестердің жиынтығы емес, өйткені келіспеушіліктер де бар, мысалы, Луа қашу таңбасын қолданады % орнына \,және Lua қамтамасыз етуі сияқты толықтырулар - -ның ашкөз емес нұсқасы ретінде *.

    Луа өрнектерінде тұрақты тіркестермен салыстырғанда жетіспейтін кейбір нәрселердің тізімі:

    • Сіз мүмкін емес бір таңбадан басқа кез-келген нәрсені ауыстыруды іздеу (сіз) мүмкін емес айтыңыз (оның | оның) арасында таңдау оның және ол, сіз тек айта аласыз [abc] таңбалардың бірін таңдау а, б, немесе c).
    • Сіз мүмкін емес сияқты бірнеше әріптен тұратын құрылымдардың еселіктерін іздеңіз (choo -) * choo сәйкестендіру choo, чоо-чоо немесе чоо-чоо-чоо. Мұны Луа өрнектерімен жасауға мүмкіндік жоқ.
    • Сіз мүмкін емес сияқты қайталанулардың минималды және максималды санын көрсетіңіз [0-9]{3,5} (3-тен 5-ке дейін сәйкестендіру үшін); Луада сіз айтар едіңіз % d% d% d% d?% d? орнына бұл жағдайда.

    Одан да қуатты нұсқаларды ұсынатын Lua кітапханалары бар,[2] оның ішінде тұрақты тіркестер, бірақ Уикипедияға қолдау өте қарапайым.

    Википедия тұрақты тіркестерге көмектеседі (Луа, айтқандай, жасайды) емес қолдау) at Уикипедия: AutoWikiBrowser / Тұрақты өрнек.