• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Openresty学习笔记(二)NginxLua正则表达式相关API

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

ngx.re.match

语法: captures, err = ngx.re.match(subject, regex, options?, ctx?, res_table?)

环境: init_worker_by_lua*, set_by_lua*, rewrite_by_lua*, access_by_lua*, content_by_lua*, header_filter_by_lua*, body_filter_by_lua*, log_by_lua*, ngx.timer.*, balancer_by_lua*, ssl_certificate_by_lua*, ssl_session_fetch_by_lua*, ssl_session_store_by_lua*

更多详解

官方的DEMO

 local m, err = ngx.re.match("hello, 1234", "[0-9]+")
 if m then
     -- m[0] == "1234"

 else
     if err then
         ngx.log(ngx.ERR, "error: ", err)
         return
     end

     ngx.say("match not found")
 end

从URL地址中获取域名,脚本:ngx-re-match.lua

    local m, err = ngx.re.match("http://www.tinywan.com/live", "(?<=://)[A-Za-z0-9.]+(?=/)")
    if m then
        -- m[0] == "1234"
        ngx.say(m[0])
        ngx.say(m[1])
    else
        if err then
            ngx.log(ngx.ERR, "error: ", err)
            return
        end

        ngx.say("match not found")
    end
    ngx.say('finished')

虚拟主机:

    server {
        listen 8334;
        server_name  127.0.0.1;
        resolver 8.8.8.8;

        location /ngx_re_match {
             lua_code_cache off;
             content_by_lua_file $path/lua/ngx-re-match.lua;
         }
    }

curl 请求结果:

curl http://127.0.0.1:8334/ngx_re_match
www.tinywan.com
nil
finished

如果想获取一级域名:tinywan.com 请使用表达式:

(?<=://w{5}.)[A-Za-z0-9.]+(?=/)

 帮助文档:

http://blog.csdn.net/weiyuefei/article/details/38439017


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
lua判断字符串包含另一个字符串发布时间:2022-07-22
下一篇:
ngx lua获取时间戳的几种方式发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap