Захват между переменной строкой и шаблоном в lua - PullRequest
0 голосов
/ 30 сентября 2018

Я хочу получить строку между двумя строками.

texterrors = [[
    <error_no name="1">
    <designator>M18</designator>
    <pin>M18</pin>
    <stamp_name>Con_10p</stamp_name>
    <package_name>M18</package_name>
    <errortype>9</errortype>
    <error_contents></error_contents>
    <pcb_no></pcb_no>
    <feeder_no></feeder_no>
    <pos_x>23735</pos_x>
    <pos_y>9722</pos_y>
    <window>2</window>
    <ng_message>Histogram NG 0%</ng_message>
    <comment>Histogram NG 0%(* *){Con_10p}</comment>
    <ng_image></ng_image>
    </error_no>
    <error_no name="2">
    <designator>M13</designator>
    <pin>M13</pin>
    <stamp_name>Cage_SFP_back</stamp_name>
    <package_name>M13</package_name>
    <errortype>9</errortype>
    <error_contents></error_contents>
    <pcb_no></pcb_no>
    <feeder_no></feeder_no>
    <pos_x>10962</pos_x>
    <pos_y>14090</pos_y>
    <window>64</window>
    <ng_message>Mismatch13%</ng_message>
    <comment>Mismatch13%(-0.14 -0.07){Cage_SFP_back}</comment>
    <ng_image></ng_image>
    </error_no>
]]

Я хочу захватить n строк, каждая из которых находится между "<error_no name="i">"and "</error_no>" Мой код указан ниже, но результаты для каждого i равны нулю

for i = 1, n do
errindex1[i] = '<error_no name='..'"'..i..'"'..'>'
stringg = errindex[i]
texterr[i] = string.match(texterrors,"..stringg..(%a)</error_no>")

Как можно использоватьпеременная строка как stringg как шаблон?

1 Ответ

0 голосов
/ 30 сентября 2018

используйте gmatch и этот шаблон (как пример):

local texterr = {}
for err in texterrors:gmatch('<error_no name="%d+">(.-)</error_no>') do
   texterr[#texterr+1] = err
   print(err)
end
...