У меня есть две части кода, которые разбивают строку на основе шаблонов.
Первый:
local test = "whop^1whap^2whup"
local pattern = "%^[12]"
local lastpos = 1
for startpos, endpos in string.gmatch( test, "()"..pattern.."()" ) do
print("pos: "..startpos..","..endpos)
print("str: "..string.sub(test,lastpos,startpos-1))
print("match: "..string.sub(test,startpos,endpos-1))
lastpos = endpos
end
Этот разбивает строку вокруг ^ 1 или ^ 2.Он выводит:
pos: 5,7
str: whop
match: ^1
pos: 11,13
str: whap
match: ^2
Вторая версия такова:
local test = "whop^t1whap^02whup"
local pattern = "%^[(t1)(02)]"
local lastpos = 1
for startpos, endpos in string.gmatch( test, "()"..pattern.."()" ) do
print("pos: "..startpos..","..endpos)
print("str: "..string.sub(test,lastpos,startpos-1))
print("match: "..string.sub(test,startpos,endpos-1))
lastpos = endpos
end
Эта версия ПРЕДПОЛАГАЕТСЯ разбить строку в ^ t1 или ^ 02.Вместо этого я получаю это:
pos: 5,7
str: whop
match: ^t
pos: 12,14
str: 1whap
match: ^0
Я заметил, что первая позиция (5,7) точно такая же, как в первом фрагменте кода, даже если длина шаблона должна быть 3 символа.
Что я делаю не так?