我有一个 url_regex acl:^http(s)://bitbucket.org/example/*
但是,它与网址匹配:http(s)://bitbucket.org/example_test/*
这似乎没有考虑 ^http(s)://bitbucket.org/example/* 末尾的“/”
我想将任何内容与子文件夹匹配示例进行匹配。例如:bitbucket.org/example/case_1 bitbucket.org/example/case_2 但不是,bitbucket.org/example_bad/case_3
它似乎是正则表达式的特殊混合,并且不考虑“/” -
谁能看出这里出了什么问题吗?
答案1
作为钢铁司机 说,它的匹配原因与car*t
matches cat
—
*
表示任意数量的前面字符,包括零。
r*
匹配和 r
之间的零,并且 your 匹配 和 之间的零斜杠。a
t
/*
example
_test/*
您想匹配http(s)://bitbucket.org/example
(没有任何子目录)吗?如果没有,那很容易;只需使用
^http(s)://bitbucket.org/example/
或者
^http(s)://bitbucket.org/example/.*$
如果你做想要匹配http(s)://bitbucket.org/example
,就有点棘手了。您需要example
位于 URL 末尾或后跟斜杠。一些正则表达式引擎会让你说
^http(s)://bitbucket.org/example(/|$)
其中|
inside (
…)
表示“或”。例如,grep -E
支持这个。我不知道这在 Squid 中是否有效。
Squid 是否允许您指定多个正则表达式?如果是,请指定
^http(s)://bitbucket.org/example$
和
^http(s)://bitbucket.org/example/