【发布时间】:2022-01-07 15:43:18
【问题描述】:
我第一次尝试Lua脚本,我想匹配字符串(用户代理),多个子字符串在匹配时排除它们。
pattern 字符串为 User-Agent 模式,多个字符串分别为 google、safari 和 edge
local m, err = ngx.re.match(ngx.req.get_headers()['User-Agent'], "(*google*|*safari*|*edge*)", "io")
if not m
then
..
end
问题 User-Agent contains google, safari, edge string 在我的请求中仍然存在。
例如用户代理:
Mozilla/5.0 (**google**; CPU iPhone OS 14_4 like Mac OS X)
Mozilla/5.0 (**safari**; CPU iPhone OS 15_1 like Mac OS X)
Timescode_RESTClient **edge** alpha
我想排除它们。
【问题讨论】:
-
这看起来像您在 lua 中使用
regex库而不是lua-pattern,对吗? -
是的就是这样
-
有什么帮助吗?
-
“我的请求中仍然存在边缘字符串”是什么意思?您没有对您的请求做任何事情,并且您的正则表达式看起来无效(ngx.re 使用 PCRE 表达式) - 我猜
err包含错误消息 -
我的意思是,用户代理的请求在正则表达式上仍然匹配,我无法排除它们,所以我的正则表达式不正确
标签: regex nginx lua openresty lua-patterns