正则表达式匹配任何不是子模式的东西

标签 regex varnish varnish-vcl

我的HTTP header 中有cookie,如下所示:

Set-Cookie: frontend=ovsu0p8khivgvp29samlago1q0; adminhtml=6df3s767g199d7mmk49dgni4t7; external_no_cache=1; ZDEDebuggerPresent=php,phtml,php3

并且我需要提取前端后面的26个字符串(例如ovsu0p8khivgvp29samlago1q0)。以下正则表达式与我的匹配:
(?<=frontend=)(.*)(?=;)

但是,我正在使用Varnish Cache,并且只能使用正则表达式替换。因此,要提取该cookie值(26个字符的frontend字符串),我需要匹配所有与该模式不匹配的字符(以便可以将它们替换为'')。

我已经做了很多Google搜寻工作,但到目前为止,还是有一个空白。我尝试了以下
  • 匹配与我想要的模式不匹配的字符:[^((?<=frontend=)[A-Za-z0-9]{26}(?=;))],与随机字符匹配,包括我想要保留的字符

  • 如果有人能指出我正确的方向,或者指出我可能出了错,我将不胜感激。

    最佳答案

    Set-Cookie 响应头在 Varnish 中有点神奇,因为后端倾向于发送多个具有相同名称的头。这是 RFC 禁止的,但实际上是这样做的。

    如果您使用的是 Varnish 3.0,您可以使用 Header VMOD,它可以解析响应并提取您需要的内容:

    https://github.com/varnish/libvmod-header

    关于正则表达式匹配任何不是子模式的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13537377/

    相关文章:

    python - 将 XML 文件解析为 Python 对象

    node.js - 在我的网站上放慢流氓网络 srappers 并仍然使用 Varnish

    linux - 如何将 https 流量从一台 Web 服务器切换到另一台 Web 服务器。 IPTABLE问题

    caching - Varnish:POST 数据后清除缓存

    varnish - 如何重定向特定的 url - Varnish?

    javascript - 在第一次出现某个模式时停止并可在 JavaScript 中搜索下一行

    python - 如何查找某个特定字符串后的字符? [化学代码]

    Javascript:检测字符串是否被 trim

    memcached - Varnish 和Adsense

    Wordpress Varnish Age=0 或不缓存(Cookies?)