这是什么意思?

Eri*_*ric 3 regex

在Apache配置文件中,有一行可以避免对图像进行gzip压缩:

SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
Run Code Online (Sandbox Code Playgroud)

我不相信可能存在类似的.gif文件名myfile.*:gif.

?:意味着什么?

jjn*_*guy 10

这个特定的部分(?:gif|jpe?g|png)几乎完全相同(gif|jpe?g|png).

这里的区别在于第一个不会在括号中"捕获"该组.换句话说,在查看匹配时,第一个示例中的内容将不会作为特殊组包含在内.

通常,当您将项目括在括号中时,它被称为"捕获组".换句话说,当查看将正则表达式与文本匹配的结果时,括号中的内容将被放入"组"中以便稍后检查.当您使用(?:stuff)括号内的东西时仍然在正则表达式中组合在一起,但它不被视为捕获组.

如果你想匹配一堆图像的文件名,这可能会有所帮助,bot不会捕获超过文件名:

"([^.]\.)(?:gif|png|tiff)"
Run Code Online (Sandbox Code Playgroud)

将文件与此正则表达式匹配时,仅捕获文件名.文件扩展名不会是因为它不在捕获组中.