从 Lua 中的 "<string>" 中取出字符串。

我想在 Lua 中从一个字符串中解析一些数据。我尝试了几种 string.matchstring.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> 之间的字符串,但没有成功。有人可以帮忙吗?

点赞
用户1009479
用户1009479

要获取<actors><actors>之间的所有字符串,请使用string.gmatch进行全局匹配:

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

注意在.-中使用了-,它匹配零个或多个出现,但是它不贪婪。

输出:

Hrithik Roshan,
Priyanka Chopra,

实际上,除非你需要把fixstr用于其他用途,否则你不需要将name:character:替换为<actors>,只需一次string.gmatch即可完成任务:

for name in string.gmatch(str, "name:(.-)character:") do
    print(name)
end
2013-12-12 05:30:45