鱿鱼 url_regex 不匹配字符

鱿鱼 url_regex 不匹配字符

我有一个 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*tmatches cat  —  *表示任意数量的前面字符,包括零  r*匹配和 r之间的零,并且 your 匹配 和 之间的零斜杠。at/*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/

相关内容