Как сделать совпадение строк на множестве цифр? - PullRequest
1 голос
/ 28 февраля 2020

У меня есть следующий набор данных:

Word-1-random
Word-2-random
Word-3-random
Word-4-random
upto
Word-19-random

Other-Word-1-random
Other-Word-2-random
Other-Word-3-random
Other-Word-4-random
upto
Other-Word-19-random

Теперь я хочу сделать совпадение по группе дат, цифры 1 - 5, 6-10, 11-15 и c. Я думал, что это было следующее:

match("^Word%-d[1-5]%-",string) 
match("%-Word%-d[1-5]%-",string) 

1 Ответ

1 голос
/ 29 февраля 2020

По вашему примеру, идея может выглядеть примерно так:

<script src="https://github.com/fengari-lua/fengari-web/releases/download/v0.1.4/fengari-web.js"></script>
<script type="application/lua">

local text = [[
Word-1-random
Word-2-random
Word-3-random
Word-4-random
upto
Word-19-random

Other-Word-1-random
Other-Word-2-random
Other-Word-3-random
Other-Word-4-random
Other-Word-5-random
Other-Word-6-random
Other-Word-7-random
Other-Word-8-random
Other-Word-9-random
Other-Word-10-random
Other-Word-11-random
]]

local s1,s2
local grp,cnt = 0,0
text:gsub('(%S+%-)(%d+)(%-%S+)', function(p1,n,p2)
  if s1 ~= p1 or s2 ~= p2 or cnt == 5 then
    print('Group'..grp)
    s1,s2 = p1,p2
    cnt = 0
    grp = grp + 1
  end
  print(p1..n..p2)
  cnt = cnt + 1
end)

</script>
...