【问题标题】:Extracting capturing group contents in Varnish regex在 Varnish 正则表达式中提取捕获组内容
【发布时间】:2017-10-26 00:42:27
【问题描述】:

我在 Varnish 配置语言中有以下正则表达式

^/abc/([a-zA-Z0-9\-\ ]*)-([0-9]+)

现在,我想在 Varnish 中获取正则表达式的值$2 部分(即[0-9]+)。

我怎样才能得到这个值?

【问题讨论】:

    标签: regex varnish varnish-vcl


    【解决方案1】:

    在这种情况下,您可以使用regsub

    set req.url = regsub(req.url, "^/abc/([a-zA-Z0-9 -]*)-([0-9]+).*", "\2");
    

    你匹配整个字符串,捕获你需要的部分,并用适当的反向引用替换。

    【讨论】:

    • 它在 varnish4+ 版本中不起作用,它给出的错误为:找不到符号:'re.group.2'(预期类型为 STRING_LIST)
    • @nr23:你有没有在顶部添加import std;
    • 您的意见是什么?是字符串吗?
    • 网址如:www.example.com/abc/def-123
    • 我再次检查了它,发现regsub 应该仍然可以按预期工作。另外,您能否确认$2 是否有效?喜欢if (req.url ~ "^/abc/([a-zA-Z0-9 -]*)-([0-9]+)") { set req.http.Thing-I-Want = $2; }
    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 2011-09-02
    • 2015-07-24
    相关资源
    最近更新 更多