Nginx Lua 正则表达式匹配第一个词

Nginx Lua regex match first word

我尝试将正则表达式转换为 Lua 语言,来自

([a-zA-Z0-9._-/]+)

^%w+?([_-]%w+)

我想用“-”和“_”匹配第一个词:

mar_paci (toto totot)
toi-re/3.9
pouri marc (sensor)
Phoenix; SAGEM

结果:

marc_paci
toi-re
pouri marc
Phoenix

使用的代码:

value = string.match(ngx.var.args, "^%w+?([_-]%w+)")

^%w+?([_-]%w+) 正则表达式中,我为可选字符串添加了 ? 字符。

你可以使用

^[%w%s_-]*%w

匹配

  • ^ - 字符串开头
  • [%w%s_-]* - 零个或多个字母数字、空格、_ 或连字符
  • %w - 字母数字字符。

查看 Lua demo:

local function extract(text)
    return string.match(text, "^[%w%s_-]*%w")
end
 
print(extract("mar_paci (toto totot)"))
-- => mar_paci
print(extract("toi-re/3.9"))
-- => toi-re