“?!”有什么用?在这个 RewriteCond 中?

What's the use of "?!" in this RewriteCond?

我经常在 .htaccess 文件中看到 RewriteCond 中的 ?! 组合,如下所示:

RewriteCond %{REQUEST_URI} ^(?!/slim_demo/index\.php).*$

据我了解,此指令检查 /slim_demo/index.php 是否不属于 REQUEST_URI。这很奇怪;最前面的 ? 有什么用,尤其是当它没有匹配的前导字符时。文档说 ?makes the match optional”,但 ? 之前的唯一内容是分组括号。这是否意味着 ? 使分组成为可选的?很有道理!

有什么奥秘?

比赛后负前瞻:\d+(?!\d| dollars) 示例匹配:100 比索中的 100 解释:\d+ 匹配 100,然后否定先行 (?! dollars) 断言在字符串中的那个位置,紧随其后的既不是数字也不是字符“ dollars”