Regex 什么意思?

Regex 什么意思?,regex,Regex,在Apache配置文件中,有一行代码可以避免图像的gzip压缩: SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary 我不相信会存在像myfile.*:gif这样的.gif文件名 那么?:是什么意思?这一特定部分(?:gif | jpe?g | png)几乎与(gif | jpe?g | png)完全相同 这里的区别是第一个不会“捕获”括号中的组。换句话说,当查看匹配项时,第一个示例中的内容不会作为特殊组包含 通常

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

SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
我不相信会存在像
myfile.*:gif
这样的
.gif
文件名

那么
?:
是什么意思?

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

这里的区别是第一个不会“捕获”括号中的组。换句话说,当查看匹配项时,第一个示例中的内容不会作为特殊组包含

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

如果要匹配一组图像的文件名,但不能捕获超过文件名的图像,则此选项非常有用:

"([^.]\.)(?:gif|png|tiff)"

将文件与此正则表达式匹配时,只捕获文件名。文件扩展名将不会更改,因为它不在捕获组中。

+1我正在删除我的答案,因为这是更好的解释,只需添加链接,可能会有所帮助@沃吉塔,我建议你保留你的答案。有两个好的也没关系。