2012-03-12 6 views
1

私は(abc)+のマッチを使用することができます​​
しかし、私はどのようにしてLuaで行うことができますか?
マイウェイ:"abcabc"と "abcabced"のマッチング方法は?

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) 

がより良い手段をお持ちですか?

答えて

0

を。 一般の場合(文字ではなく文字列を検索しています)...話していない場合

ルアのパターンはではなく、正規表現です。それらは単なるパターンマッチングシステムです。それらの機能は、正規表現を使うよりも制限されていますが、実装ははるかに小さくなっています。完全な正規表現のサポートが必要な場合は、Lua library for thatを見つけることができます。

1

も試してみてください:あなたはあなたが求めて正確に何をして、特定の場合の話をしている場合は、他の2つの答えは、合理的な代替手段を提供

s="xabcabcabcyz" 
p="" 
t=nil 
repeat 
    m=t 
    p=p.."abc" 
    t=string.match(s,p) 
until t==nil 
print(m) 
1
str = "abcabced" 
results = {} 
for match in string.gmatch(str, "abc") do 
    table.insert(results, match) 
end 

print(table.concat(results)) 
+0

これは、OPによって引き起こされる同じ問題を解決しません。最初の連続した繰り返しだけでなく、 '' abc ''の*すべての出現を見つける。 – lhf

関連する問題