Lua 脚本匹配多个单词

这是我第一次尝试 Lua 脚本,我想要匹配字符串中的(用户代理)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

问题是用户代理包含 google,safari,edge 字符串仍然存在于我的请求中。

例如用户代理:

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

我想要排除它们。

原文链接 https://stackoverflow.com/questions/70623722

点赞
stackoverflow用户369550
stackoverflow用户369550

ngx.re.match 使用 PCRE 正则表达式,其中 * 大致意为 "零或多个重复(它前面的字符)",因此必须对其进行转义:(\*google\*|\*safari\*|\*edge\*)

2022-01-19 10:29:47