Varnish vcl 如何在varnish中使用正则表达式从未定义长度的字符串中提取n个字符?

Varnish vcl 如何在varnish中使用正则表达式从未定义长度的字符串中提取n个字符?,varnish-vcl,Varnish Vcl,我正在为我的后端服务器编写一个varnish模块(VCL)。它需要从未定义长度的字符串中提取n个字符的逻辑 我用正则表达式尝试了vcl的regsub()函数,用空格替换字符串的一部分 我需要提取字符串的前20个字符。当字符串长度为36时,我使用正则表达式将最后16个字符替换为空格。 但当字符串的长度未定义时,则表示为40。我得到24个字符,而不是20个字符。我如何做到这一点 set req.http.mysubstr = regsub(req.http.mystring, ".{16}$", "

我正在为我的后端服务器编写一个varnish模块(VCL)。它需要从未定义长度的字符串中提取n个字符的逻辑

我用正则表达式尝试了vcl的regsub()函数,用空格替换字符串的一部分

我需要提取字符串的前20个字符。当字符串长度为36时,我使用正则表达式将最后16个字符替换为空格。 但当字符串的长度未定义时,则表示为40。我得到24个字符,而不是20个字符。我如何做到这一点

set req.http.mysubstr = regsub(req.http.mystring, ".{16}$", "");

使用捕获组:

regsub(req.http.mystring, "^(.{20}).*", "\1")
在regex101.com上测试它

regsub(req.http.mystring, "^(.{20}).*", "\1")