Как сопоставить «abcabc» из «abcabced»? - PullRequest
1 голос
/ 12 марта 2012

Я мог бы использовать (abc)+ match "abcabc"
Но как я могу сделать в Lua?
Мой путь:

test = "abcabced"
get,getstr = "",""
while get ~= nil do
    get = string.match(test,"abc")
    getstr = getstr .. get
    test = string.gsub(test,get,"",1)
end
print(getstr) 

Есть лучшие средства?

Ответы [ 3 ]

1 голос
/ 12 марта 2012
str = "abcabced"
results = {}
for match in string.gmatch(str, "abc") do
    table.insert(results, match)
end

print(table.concat(results))
1 голос
/ 12 марта 2012

Попробуйте также это:

s="xabcabcabcyz"
p=""
t=nil
repeat
    m=t
    p=p.."abc"
    t=string.match(s,p)
until t==nil
print(m)
0 голосов
/ 12 марта 2012

Если вы говорите о конкретном случае выполнения именно того, о чем вы просили, два других ответа дают разумные альтернативы. Если вы говорите о случае general (ищите строки, а не символы) ... вы не делаете.

Шаблоны Lua - это , а не регулярные выражения. Они просто система сопоставления с образцом. Их функциональность более ограничена, чем у регулярных выражений, но реализация намного меньше. Если вам нужна полная поддержка регулярных выражений, вы можете найти библиотеку Lua для этого .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...