我正在为我的后端服务器编写一个清漆模块(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
使用捕获组:
regsub(req.http.mystring, "^(.{20}).*", "\1")
在regex101.com上测试它