gpt4 book ai didi

regex - Varnish 3 没有正确解析正则表达式模式

转载 作者:行者123 更新时间:2023-12-02 01:47:19 25 4
gpt4 key购买 nike

我正在编写一些生成 PCRE 模式的代码,这些模式用于禁止 varnish 中的对象,但 varnish 有问题告诉我模式无效。

这是我的代码生成的模式之一

(?i)(((^| )page\-2[^ ]*($| )))

这就是 Varnish 告诉我的

 0 Debug        - "REGEX: <missing )>"

13 RxRequest c BAN
13 RxURL c /
13 RxProtocol c HTTP/1.1
13 RxHeader c User-Agent: curl/7.34.0
13 RxHeader c Accept: */*
13 RxHeader c Host: www.test.local
13 RxHeader c X-Tags: (?i)(((^| )page\-2[^ ]*($| )))

我什至尝试在对此进行测试期间简化模式

page-2[^ ]
page\-2[^ ]

我明白了

 0 Debug        - "REGEX: <missing terminating ] for character class>"

像这样的简单模式可行

page-2.*

我正在运行 varnish-3.0.2 修订版 cbf1284

相关的VCL是

if (req.request == "BAN") {
ban("obj.http.X-Tags ~ " + req.http.X-Tags);
error 200 "Banned";
}

并且,很明显原始模式是有效的 Regular expression visualization

最佳答案

显然,正如我在对原始问题的评论中意外发现的那样, Varnish 不喜欢正则表达式中的空格文字。这种情况下的解决方案是用 \s 替换空格文字,它匹配任何空白字符,包括空格、制表符和换行符。

关于regex - Varnish 3 没有正确解析正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24958265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com