String Lua:搜索特定字符串

String Lua:搜索特定字符串,string,parsing,lua,String,Parsing,Lua,Hi all尝试了所有字符串模式和库参数,但仍然卡住 我想从下面的字符串中获取控制器的名称。我尝试了string.matcH,但它与从字符串中找到的第一个字符中的匹配 字符串是 fixstrdirector={id:39254,演员:[{id:15250,姓名:霍普·戴维斯,角色:黛布拉阿姨,顺序:5,演员id:10,简介路径:/aihf11ss8p08a8jufiwf8ohpvhos.jpg},{id:53650,姓名:安东尼·麦基,角色:芬恩,顺序:3,演员id:11,简介路径:/5vggj

Hi all尝试了所有字符串模式和库参数,但仍然卡住

我想从下面的字符串中获取控制器的名称。我尝试了string.matcH,但它与从字符串中找到的第一个字符中的匹配

字符串是

fixstrdirector={id:39254,演员:[{id:15250,姓名:霍普·戴维斯,角色:黛布拉阿姨,顺序:5,演员id:10,简介路径:/aihf11ss8p08a8jufiwf8ohpvhos.jpg},{id:53650,姓名:安东尼·麦基,角色:芬恩,顺序:3,演员id:11,简介路径:/5vggj0co8sc94iied2o3c36t.jpg},{id:19034,姓名:伊万杰琳·礼来,角色:贝利·塔利特,顺序:2,演员id:12,个人资料路径:/OAOPJKKEDW49JXVUCPCEQJB3.jpg},{id:6968,姓名:休·杰克曼,角色:查理·肯顿,顺序:0,演员id:13,个人资料路径:/wnl7esRbP3paALKn4bCr0k8qaFu.jpg},{id:79072,姓名:凯文杜兰德,角色:里奇,顺序:4,演员id:14,个人资料路径:/WNL7ESRBBP3PAALKN4BCR0K8Q8QATJJ0G},{id:234479,姓名:达科他州高雄,角色:马克斯·肯顿,顺序:1,演员id:15,个人资料路径:/7pu6n4fhduwwwcyrvnveze7ct.jpg},{id:8986,姓名:詹姆斯·雷伯恩,角色:马文,顺序:6,演员id:16,个人资料路径:/ezetmv0ym0rg6yhkpu4vhui37d.jpg},{id:930729,姓名:马可鲁杰里,角色:克里夫,顺序:7,演员id:17,个人资料路径:/ezetmzv0ym0rg6ywkpujwqq1wjjjj3wwjjjjj3wjg},{id:19860,姓名:卡尔·尤恩,角色:塔克·马希多,顺序:8,演员id:18,个人资料路径:/qK315vPObCNdywdRN66971FtFez.jpg},{id:111206,姓名:奥尔加·方达,角色:法拉·莱姆科娃,顺序:9,演员id:19,个人资料路径:/J1Qabohf83PF82F1LFUMDF5XVSP.jpg},{id:53176,姓名:约翰·加廷斯,角色:F8pin,顺序:10,演员id:41,个人资料路径:/Mqbohf3PF21FPUMDF5XV2FNxJ},{id:1126350,姓名:索菲·利维,角色:大姐姐,顺序:11,演员id:42,角色简介:空},{id:1126351,姓名:苔丝·利维,角色:小妹妹,顺序:12,演员id:43,角色简介:空},{id:1126352,姓名:查理·利维,角色:小妹妹,顺序:13,演员id:44,角色简介:空},{id:187983,姓名:格雷戈里·西姆斯,角色:比尔·潘纳,顺序:14,演员id:45,个人资料路径:null}],剧组:[{id:58726,姓名:莱斯利·博赫姆,部门:写作,工作:剧本,个人资料路径:null},{id:53176,姓名:约翰·加廷斯,部门:写作,工作:剧本,个人资料路径:/A2MQNSKVZOUBZOF8MVFNYVE2H2LXJ.jpg},{id:17825,姓名:Shawn Levy,部门:导演,职务:导演,简介路径:/7f2f8EXdlWsPYN0HPGcIlG21xU.jpg},{id:12415,姓名:Richard Matheson,部门:写作,职务:故事,简介路径:null},{id:57113,姓名:Dan Gilroy,部门:写作,职务:故事,简介路径:null},{id:25210,姓名:Jeremy Leven,部门:写作,职务:故事,简介路径:null},{id:17825,名称:ShawnLevy,部门:生产,作业:生产者,配置文件路径:/7f2f8EXdlWsPYN0HPGcIlG21xU.jpg},{id:34970,名称:SusanMontford,部门:生产,作业:生产者,配置文件路径:/1xjt51Y9CipHchraye0J6JSMGJI.jpg},{id:3183,名称:DonMurphy,部门:生产,作业:生产者,配置文件路径:null},{id:34967,姓名:里克·贝纳塔,部门:制作,职务:制片人,档案路径:null},{id:1126348,姓名:埃里克·赫达亚特,部门:制作,职务:制片人,档案路径:null},{id:186721,姓名:罗恩·艾姆斯,部门:制作,职务:制片人,档案路径:null},{id:10956,姓名:乔希·麦克拉格伦,部门:制作,职务:执行制片人,档案路径:null},{id:57634,姓名:玛丽·麦克拉格伦,部门:制作,职务:执行制片人,档案路径:null},{id:23779,姓名:杰克·拉普克,部门:制作,职务:执行制片人,档案路径:null},{id:488,姓名:史蒂文·斯皮尔伯格,部门:制作,职务:执行制片人,档案路径:/cuidfbee89phpoios9tmo84ed2.jpg},{id:30,姓名:史蒂夫·斯塔基,部门:制作,职务:执行制片人,简介路径:空},{id:24,姓名:罗伯特·泽梅基斯,部门:制作,职务:执行制片人,简介路径:/iscuz9pwioyxzdzdf3ihodxzjuuml.jpg},{id:531,姓名:丹尼·埃尔夫曼,部门:声音,职务:原创音乐作曲家,简介路径:/pwaczpypos8io22neim7d3wp2j.jpg},{id:18265,姓名:毛罗·菲奥雷,部门:剧组,职务:摄影,简介:空},{id:54271,姓名:迪恩·齐默尔曼,部门:编辑,职务:编辑,简介:空},{id:25365,姓名:理查德·希克斯,部门:制作,职务:演员,简介:空},{id:5490,姓名:大卫·鲁宾,部门:制作,职务:演员,简介:空},{id:52088,姓名:Tom Meyer,部门:艺术,工作:产品设计,个人资料_path:null}]}

我试过string.match(fixstrdirector,“名称:(.+),部门:Directing”)

但它给了我从第一次出现到找到名字到字符串结尾的时间

输出:

Hope Davis,character:Aunt Debra,order:5,cast_id:10,profile_path:/aIHF11Ss8P0A8JUfiWf8OHPVhOs.jpg},{id:53650,name:Anthony Mackie,character:Finn,order:3,cast_id:11,profile_path:/5VGGJ0Co8SC94iiedWb2o3C36T.jpg},{id:19034,name:Evangeline Lilly,character:Bailey Tallet,order:2,cast_id:12,profile_path:/oAOpJKgKEdW49jXrjvUcPcEQJb3.jpg},{id:6968,name:Hugh Jackman,character:Charlie Kenton,order:0,cast_id:13,profile_path:/wnl7esRbP3paALKn4bCr0k8qaFu.jpg},{id:79072,name:Kevin Durand,character:Ricky,order:4,cast_id:14,profile_path:/c95tTUjx5T0D0ROqTcINojpH6nB.jpg},{id:234479,name:Dakota Goyo,character:Max Kenton,order:1,cast_id:15,profile_path:/7PU6n4fhDuFwuwcYVyRNVEZE7ct.jpg},{id:8986,name:James Rebhorn,character:Marvin,order:6,cast_id:16,profile_path:/ezETMv0YM0Rg6YhKpu4vHuIY37D.jpg},{id:930729,name:Marco Ruggeri,character:Cliff,order:7,cast_id:17,profile_path:/1Ox63ukTd2yfOf1LVJOMXwmeQjO.jpg},{id:19860,name:Karl Yune,character:Tak Mashido,order:8,cast_id:18,profile_path:/qK315vPObCNdywdRN66971FtFez.jpg},{id:111206,name:Olga Fonda,character:Farra Lemkova,order:9,cast_id:19,profile_path:/j1qabOHf3Pf82f1lFpUmdF5XvSp.jpg},{id:53176,name:John Gatins,character:Kingpin,order:10,cast_id:41,profile_path:/A2MqnSKVzOuBf8MVfNyve2h2LxJ.jpg},{id:1126350,name:Sophie Levy,character:Big Sister,order:11,cast_id:42,profile_path:null},{id:1126351,name:Tess Levy,character:Little Sister,order:12,cast_id:43,profile_path:null},{id:1126352,name:Charlie Levy,character:Littlest Sister,order:13,cast_id:44,profile_path:null},{id:187983,name:Gregory Sims,character:Bill Panner,order:14,cast_id:45,profile_path:null}],crew:[{id:58726,name:Leslie Bohem,department:Writing,job:Screenplay,profile_path:null},{id:53176,name:John Gatins,department:Writing,job:Screenplay,profile_path:/A2MqnSKVzOuBf8MVfNyve2h2LxJ.jpg},{id:17825,name:Shawn Levy

从“name:”的第一次出现到“department:Directing”之间的所有内容,您都在搜索

相反,您需要限制两个字符串之间的内容。例如,我在这里说,组成名称的字符只能是字母数字或空格:

string.match(fixstrdirector,"name:([%w ]+),department:Directing")
或者,如果参数之间有逗号分隔,更好的方法是搜索“name:”后跟逗号以外的任何字符,后跟“department:Directing”:


当然,如果名称中有一个逗号,这是行不通的!

您正在搜索从第一次出现“名称:”到“部门:导演”之间的所有内容

相反,您需要限制两个字符串之间的内容。例如,我在这里说,组成名称的字符只能是字母数字或空格:

string.match(fixstrdirector,"name:([%w ]+),department:Directing")
或者,如果参数之间有逗号分隔,更好的方法是搜索“name:”后跟逗号以外的任何字符,后跟“department:Directing”:


当然,如果名称中有一个逗号,这将不起作用!

Lua patterns为上述任务提供了
-
修饰符。如上所述:

+
修饰符匹配原始类的一个或多个字符。 它将始终获得与模式匹配的最长序列

*
类似,修饰符
-
也匹配零次或多次出现的 原始类的字符。但是,与 最长的序列,它匹配最短的序列

下一个
local tAllNames = {}
for sName in fixstrdirector:gmatch( "name:([^,]-),department:Directing" ) do
    tAllNames[ #tAllNames + 1 ] = sName
end