提取Varnish regex中的捕获组内容
我有以下Varnish配置语言中的正则表达式提取Varnish regex中的捕获组内容,regex,varnish,varnish-vcl,Regex,Varnish,Varnish Vcl,我有以下Varnish配置语言中的正则表达式 ^/abc/([a-zA-Z0-9\-\ ]*)-([0-9]+) 现在,我想获取Varnish中正则表达式的值$2部分(即[0-9]+) 如何获取该值?在这种情况下,您可以使用regsub: set req.url = regsub(req.url, "^/abc/([a-zA-Z0-9 -]*)-([0-9]+).*", "\2"); 匹配整个字符串,捕获所需的部分,并替换为相应的反向引用。它在varnish4+版本中不起作用,错误为:符号未
^/abc/([a-zA-Z0-9\-\ ]*)-([0-9]+)
现在,我想获取Varnish中正则表达式的值$2
部分(即[0-9]+
)
如何获取该值?在这种情况下,您可以使用
regsub
:
set req.url = regsub(req.url, "^/abc/([a-zA-Z0-9 -]*)-([0-9]+).*", "\2");
匹配整个字符串,捕获所需的部分,并替换为相应的反向引用。它在varnish4+版本中不起作用,错误为:符号未找到:'re.group.2'(预期类型字符串列表)@nr23:是否添加了
导入标准代码>在顶部?您的输入是什么?它是一个字符串吗?url类似于:www.example.com/abc/def-123I再次检查它,发现regsub
仍应按预期工作。另外,请确认$2
是否有效?比如if(req.url~“^/abc/([a-zA-Z0-9-]*)-([0-9]+)”{set req.http.Thing-I-Want=$2;}