Lua lrex lib pcre模式匹配

问题描述:

我正在使用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 

应该在输出显示铬39.0.2171 但其仅显示浏览器。

任何人都可以帮助我纠正这个错误。任何帮助表示感谢。

+0

'local pattern = [[(Chrome | Chromium)/(\ d | \。)+]]' –

你得到多个值,但只有第一个是w拍摄,所以你要么需要更多的值添加到for循环或添加其他分组,通过添加另一组括号捕捉你所需要的全部结果:[[((Chrome|Chromieum)/(\d+)\.(\d+)\.?(\d*))]]

+0

如果我在Chrome | Chromiem | Safari等模式中添加更多OR,则会搜索字符串并返回结果Chrome和Safari。 但问题是数字。它不返回我版本号,正如我所提到的/(\d+)\.(\d+)\.?((dd)))。如何克服这个问题。我如何使用单一模式得到整个结果。 – Vish

+0

它有效。谢谢 – Vish