Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提取Varnish regex中的捕获组内容_Regex_Varnish_Varnish Vcl - Fatal编程技术网

提取Varnish regex中的捕获组内容

提取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+版本中不起作用,错误为:符号未

我有以下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+版本中不起作用,错误为:符号未找到:'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;}