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

时间:2019-04-11 07:03:03

标签: varnish-vcl

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

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

我需要提取字符串的前20个字符。当字符串长度为36时,我使用正则表达式将最后16个字符替换为空白。 但是,当字符串的长度不确定时,说40。我得到24个字符而不是20个字符。我该如何实现?

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

set req.http.mysubstr = regsub(req.http.mystring, ".{($variable)}$", ""); # $variable should be the length of the string - first 20 characters

1 个答案:

答案 0 :(得分:0)

使用捕获组:

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

在regex101.com上测试