2

Lua で文字列からいくつかのデータを解析したいと考えています。string.matchandのいくつかの組み合わせを試しstring.subましたが、うまくいきませんでした。詳細はこちら...

str='[{id:78749,name:Hrithik Roshan,character:Vijay Deenanath Chauhan,order:0,cast_id:1,profile_path:/1uGhDRNCA9I4WvyD9TfgKYnLEhZ.jpg},{id:77234,name:Priyanka Chopra,character:Kaali Gawde,ord'

fixstr = string.gsub(str,"name:","<actors>")
fixstr = string.gsub(fixstr,"character:","<actors>")
print(fixstr)
fixstr1 = string.match( fixstr, "<actors>(.+)<actors>")
print(fixstr1)

出力:

の出力 rint(fixstr)

[{id:78749,<actors>Hrithik Roshan,<actors>Vijay Deenanath Chauhan,order:0,cast_id:1,profile_path:/1uGhDRNCA9I4WvyD9TfgKYnLEhZ.jpg},{id:77234,<actors>Priyanka Chopra,<actors>Kaali Gawde,ord

の出力 print(fixstr1)

Hrithik Roshan,<actors>Vijay Deenanath Chauhan,order:0,cast_id:1,profile_path:/1uGhDRNCA9I4WvyD9TfgKYnLEhZ.jpg},{id:77234,<actors>Priyanka Chopra,

私がやろうとしているのは、その間のすべての文字列を取得することですが、うまくいき<actors>...<actors> ませんでした。誰でもこれについて助けることができますか?

4

1 に答える 1

3

<actors>との間のすべての文字列を取得するには、グローバル マッチ<actors>に使用します。string.gmatch

for name in string.gmatch(fixstr, "<actors>(.-)<actors>") do
    print(name)
end

0 回以上の出現に一致する.-inの使用に注意してください。ただし、貪欲ではありません。-

出力:

Hrithik Roshan,
Priyanka Chopra,

fixstr実際には、他の用途が必要でない限り、name:andcharacter:をに置き換える必要はありません<actors>。 を 1 回実行するだけで十分ですstring.gmatch

for name in string.gmatch(str, "name:(.-)character:") do
    print(name)
end
于 2013-12-12T05:30:45.130 に答える