Nginx Lua 正则匹配第一个单词

我尝试将正则表达式转换为 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+) 正则表达式中,我添加了 ? 字符来匹配可选字符串。

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

点赞
stackoverflow用户3832970
stackoverflow用户3832970

你可以使用

^[%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
2022-01-14 13:14:28