我是Lua脚本语言的新手,因此只需尝试使用此语言即可。我有一个将解析浏览器用户代理字符串并将返回浏览器信息的任务。
尽管我在lua上做了很多R&
因此,我尝试通过在我的LUA脚本中使用一些PHP UA代理库逻辑来通过它来实现。根据PHP库(PHP US Parser),它具有所有可能的用户代理字符串的正则文件,因此它实际上将所有这些字符串存储在JSON文件中,并将输入的UA字符串与这些Regex文件数据匹配,并返回了输入用户代理的完整详细信息。
现在,我还试图在我的LUA脚本中复制相同的逻辑,但是不幸的是,由于Lua没有自己的Regex库,因此我试图用其现有的可用函数对UA字符串进行解析。现在我坚持在这里实现逻辑。
这是我的UA字符串
local ua ="Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"
这是此字符串的正则码
local pattern = [[@(Chromium|Chrome)/(d+).(d+)(?:.(d+))?@]]
这是我的代码从ua字符串获得确切匹配
for w in s:gmatch(pattern) do
ngx.say(w)
end`
运行此代码后,它将返回我零或无值
即使我也尝试过这种模式 local pattern = [[(Chrome|Chromimum)/%d+]
现在,它只返回我只有一场" chrome"的一场比赛,因为它应该像以下结果一样返回结果
[0] => Chrome/39.0.2171
[1] => Chrome
[2] => 39
[3] => 0
[4] => 2171
每个索引表示浏览器不同的值,例如浏览器名称,版本,OS名称等
任何帮助都非常感谢。
luA模式与正则态度不同。以下言论:
(Chromium|Chrome)/(d+).(d+)(?:.(d+))?
将被重写为(请注意,|
在LUA模式中无效):
(Chrom[eium]+)/(%d+)%.(%d+)%.?(%d*)
您可以在此处的工作中看到上述内容。