Lua lrex lib pcre 模式匹配

我正在使用 Lua lrex lib (PCRE)进行正则表达式模式匹配,并尝试使用以下代码。

local string="Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"
local pattern=[[(Chrome|Chromieum)/(\d+)\.(\d+)\.?(\d*)]]

for w in rex.gmatch( string, pattern) do
    ngx.say(w)
end

它应该显示 Chrome 39.0.2171,但仅在输出中显示 Chrome。

请问有谁能帮我纠正这个错误。 我非常感激任何帮助。

点赞
用户1442917
用户1442917

你会得到多个值,但是只有第一个值被w所捕获,所以你要么需要在for循环中添加更多的值,要么通过添加另一组括号来捕获你需要的所有结果:[[((Chrome|Chromieum)/(\d+)\.(\d+)\.?(\d*))]]

2017-02-28 03:57:10