【问题标题】:How to extract n characters from a string of undefined length using regex in varnish?如何在清漆中使用正则表达式从长度未定义的字符串中提取 n 个字符?
【发布时间】:2019-05-01 09:22:59
【问题描述】:

我正在为我的后端服务器编写一个清漆模块 (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

【问题讨论】:

    标签: varnish-vcl


    【解决方案1】:

    使用捕获组:

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

    在 regex101.com 上测试它

    【讨论】:

      猜你喜欢
      • 2018-07-11
      • 2013-06-04
      • 1970-01-01
      • 2014-10-17
      • 2014-08-25
      • 2016-12-09
      • 2021-09-25
      • 1970-01-01
      • 2021-11-09
      相关资源
      最近更新 更多